Insert and update with core SQLAlchemy

前端 未结 1 632
时光说笑
时光说笑 2021-02-02 16:23

I have a database that I don\'t have metadata or orm classes for (the database already exists).

I managed to get the select stuff working by:

from sqlalc         


        
相关标签:
1条回答
  • 2021-02-02 16:50

    As you can see from the SQLAlchemy Overview documentation, sqlalchemy is build with two layers: ORM and Core. Currently you are using only some constructs of the Core and building everything manually.

    In order to use Core you should let SQLAlchemy know some meta information about your database in order for it to operate on it. Assuming you have a table mytable with columns field1, field2, field3 and a defined primary key, the code below should perform all the tasks you need:

    from sqlalchemy.sql import table, column, select, update, insert
    
    # define meta information
    metadata = MetaData(bind=engine)
    mytable = Table('mytable', metadata, autoload=True)
    
    # select
    s = mytable.select() # or:
    #s = select([mytable]) # or (if only certain columns):
    #s = select([mytable.c.field1, mytable.c.field2, mytable.c.field3])
    s = s.where(mytable.c.field1 == 'abc')
    result = session.execute(s)
    out = result.fetchall()
    print(out)
    
    # insert
    i = insert(mytable)
    i = i.values({"field1": "value1", "field2": "value2"})
    session.execute(i)
    
    # update
    u = update(mytable)
    u = u.values({"field3": "new_value"})
    u = u.where(mytable.c.id == 33)
    session.execute(u)
    
    0 讨论(0)
提交回复
热议问题