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!
  • 相关阅读:
    Centos 设置默认路由得优先级
    openstack-NUMA排错记录
    openstack -新建project
    As3 常用日期工具
    As3 计算两个日期之间的天数差
    解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题
    网盘+SVN
    SQL 并发-转
    工作目录
    Cookie
  • 原文地址:https://www.cnblogs.com/luckygxf/p/15073314.html
Copyright © 2011-2022 走看看