One - One Code All

Blog Content

python数据库orm之sqlalchemy的excute执行方式

Python   2015-12-18 21:56:27

python数据库orm之sqlalchemy的excute执行方式

from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine, Table, MetaData, Column, Integer, String

def sqlalchemy_test():
    engine = create_engine("mysql+pymysql://username:password@localhost:3306/database_name?charset=utf8", echo=True)  
    meta = MetaData()
    test_table = Table("tb_test", meta,
                   Column("id", Integer, primary_key=True, autoincrement=True),
                   Column("name", String(255))
                   )
    # 方式1
    res_1 = engine.execute(test_table.select())
    for re in res_1:
        # dosomething
    res_1.close()

    # 方式2
    conn = engine.connect()
    res_2 = conn.execute(test_table.select())
    for re in res_2:
        # dosomething
    res_2.close()

    # 方式3
    session_db = sessionmaker(bind=engine)
    session = session_db()
    res_3 = session.execute(test_table.select())
    for re in res_3:
        # dosomething
    session.close()


使用try,except捕获异常,有回滚操作的时候,建议使用以下方式:

class ThingOne(object):
    def go(self, session):
        session.query(FooBar).update({"x": 5})

class ThingTwo(object):
    def go(self, session):
        session.query(Widget).update({"q": 18})

def run_my_program():
    session = Session()
    try:
        ThingOne().go(session)
        ThingTwo().go(session)

        session.commit()
    except:
        session.rollback()
        raise
    finally:
        session.close()



上一篇:python数据库orm之sqlalchemy的使用
下一篇:cvxopt二次规划

The minute you think of giving up, think of the reason why you held on so long.