zoukankan      html  css  js  c++  java
  • SQLAlchemy 事务

    定义两个表User和Person, 先插入第一个表,抛出异常,在插入第二个表

    UserModel

    from sqlalchemy import Column, Integer, VARCHAR
    from sqlalchemy.orm import declarative_base
    
    Base = declarative_base()
    
    
    class User(Base):
        __tablename__ = 'users'
        id = Column(Integer, primary_key=True)
        name = Column(VARCHAR(256), nullable=False)
        age = Column(Integer)
        place = Column(VARCHAR(256), nullable=False)
    
        def __init__(self, id, name, age, place):
            self.id = id
            self.name = name
            self.age = age
            self.place = place

    PersonModel

    from sqlalchemy import Column, Integer, VARCHAR
    from sqlalchemy.orm import declarative_base
    
    Base = declarative_base()
    
    
    class Person(Base):
        __tablename__ = 'person'
        id = Column(Integer, primary_key=True)
        name = Column(VARCHAR(256), nullable=False)
        age = Column(Integer)
    
        def __init__(self, id, name, age):
            self.id = id
            self.name = name
            self.age = age

    事务Demo

    from MySQLUtil import get_session
    from PersonModel import Person
    from UserModel import User
    
    
    def raise_error():
        raise Exception
    
    
    def add_user(user, person):
        session = get_session()
        session.add(user)
        raise_error()
        session.add(person)
        session.commit()
        session.close()
    
    
    def query_person():
        session = get_session()
        persons = session.query(Person).all()
        session.close()
        return persons
    
    
    if __name__ == '__main__':
        # id, name, age, place
        wangwu_user = User(id=3, name='wangwu1', age=18, place='Chengdu')
        # id, name, age
        wangwu_person = Person(id=2, name='wangwu1', age=18)
        add_user(wangwu_user, wangwu_person)
    Please call me JiangYouDang!
  • 相关阅读:
    windows安装php的redis扩展及测试(适合php个各个版本)
    golang+linux+pipline
    泰勒展开式
    微积分
    矩阵
    learning rate warmup实现
    python asyncio as_completed
    python asyncio run_until_complete
    python asyncio 使用ThreadPoolExecutor和asyncio完成阻塞IO请求
    python asyncio call_soon, call_at, call_later
  • 原文地址:https://www.cnblogs.com/luckygxf/p/15073314.html
Copyright © 2011-2022 走看看