sqlachemy之增删改查等相关内容-145
今日内容
1 sqlachemy
1 orm框,可以独立出来用
2 orm执行原生sql
-生成engine(连接池)
engine = create_engine()
-获取链接
conn=engine.raw_connection()
-后续就一样了
3 创建表,删除表和生成字段(不能创建数据库)
-写一个类
Base = declarative_base()
class Users(Base):
__tablename__ = 'users' # 数据库表名称
id = Column(Integer, primary_key=True) # id 主键
name = Column(String(32), index=True, nullable=False) # name列,索引,不可为空
-把被Base管理的所有表创建和删除
engine = create_engine()
Base.metadata.create_all(engine)
Base.metadata.drop_all(engine)
4 单表新增
engine = create_engine()
Connection = sessionmaker(bind=engine)
# 每次执行数据库操作时,都需要创建一个Connection
conn = Connection()
user=User(name='lqz')
conn.add(user)
conn.add_all([对象1,对象2])
# 提交
conn.commit()
con.close()
5 一对多关系建立
class Hobby(Base):
__tablename__ = 'hobby'
id = Column(Integer, primary_key=True)
caption = Column(String(50), default='篮球')
class Person(Base):
__tablename__ = 'person'
nid = Column(Integer, primary_key=True)
name = Column(String(32), index=True, nullable=True)
# hobby指的是tablename而不是类名,uselist=False
hobby_id = Column(Integer, ForeignKey("hobby.id"))
# 跟数据库无关,不会新增字段,只用于快速链表操作
# 类名,backref用于反向查询
hobby=relationship('Hobby',backref='pers')
5 一对多新增
engine = create_engine()
Connection = sessionmaker(bind=engine)
# 每次执行数据库操作时,都需要创建一个Connection
conn = Connection()
hobby=Hobby(caption='美女')
person=Person(name='lqz',hobby_id=1)
conn.add_all([hobby,person])
# 第二种方式
hobby=Hobby(caption='美女')
person=Person(name='lqz',hobby=hobby) # 通过对象来匹配hobby_id
conn.add_all([hobby,person])
# 提交
conn.