使用sqlalchemy实现外键关联的例子(程序,本例子来源于sqlalchemy官网)
来源:互联网 发布:nginx 返回数据截断 编辑:程序博客网 时间:2024/06/11 07:26
import sqlalchemy as sqla
import sqlalchemy.orm as sqlormfrom sqlalchemy.ext.declarative import declarative_base as sqla_declarative_base
Base = sqla_declarative_base()
engine = sqla.create_engine('sqlite:///test.db', echo=True)
association_table = sqla.Table(
'association', Base.metadata,
sqla.Column('page_id', sqla.Integer, sqla.ForeignKey('page.id')),
sqla.Column('tag_id', sqla.Integer, sqla.ForeignKey('tag.id'))
)
class Page(Base):
__tablename__ = 'page'
id = sqla.Column(sqla.Integer, primary_key=True)
name = sqla.Column(sqla.String)
tags = sqlorm.relationship('Tag', secondary=association_table)
class Tag(Base):
__tablename__ = 'tag'
id = sqla.Column(sqla.Integer, primary_key=True)
name = sqla.Column(sqla.String)
pages = sqlorm.relationship('Page', secondary=association_table)
Base.metadata.bind = engine
Base.metadata.create_all()
Session = sqlorm.scoped_session(sqlorm.sessionmaker(bind=engine))
def save_page():
sess = Session()
try:
page = Page(name='Python API Page')
sess.add(page)
sess.flush()
sess.commit()
finally:
sess.close()
def add_tag():
sess = Session()
try:
python_tag = Tag(name='python')
api_tag = Tag(name='api')
sess.add(python_tag)
sess.add(api_tag)
page = sess.query(Page).first()
page.tags.append(python_tag)
page.tags.append(api_tag)
sess.flush()
sess.commit()
finally:
sess.close()
def remove_tag():
sess = Session()
try:
page = sess.query(Page).first()
api_tag = sess.query(Tag).filter(Tag.name=='api').first()
page.tags.remove(api_tag)
sess.flush()
sess.commit()
finally:
sess.close()
if __name__ == '__main__':
save_page()
add_tag()
remove_tag()
0 0
- 使用sqlalchemy实现外键关联的例子(程序,本例子来源于sqlalchemy官网)
- sqlalchemy 简单例子
- sqlalchemy的关联子查询
- SQLAlchemy的简单使用
- Python-SQLAlchemy的使用
- SQLAlchemy的基本使用
- flask-SQLAlchemy一些使用技巧(关联关系的创建)
- SQLAlchemy外键约束
- 使用 SQLAlchemy
- sqlalchemy使用
- 使用sqlalchemy
- 使用SQLAlchemy
- 使用SQLAlchemy
- 使用 sqlalchemy
- 使用SQLAlchemy
- sqlalchemy
- SQLAlchemy
- sqlAlchemy
- rabbitMQ linux 安装步骤
- 数据结构---图的广度优先遍历和深度优先遍历
- Git:代码冲突常见解决方法--
- POJ 3522:Slim Span
- C# Invoke解读
- 使用sqlalchemy实现外键关联的例子(程序,本例子来源于sqlalchemy官网)
- php7.0 出现 curl_setopt(): Disabling safe uploads is no longer supported in 报错!
- Hadoop之HDFS架构功能剖析说明
- Swiper实现图片滚动效果
- struts2与spring整合时提示无法注入bean的错误
- IOC,依赖倒置 (理解) Spring依赖注入的实现技术是:动态代理
- 剑指Offer——面试题22:栈的压入、弹出序列
- 在IntelliJ IDEA上使用Maven搭建SSM框架(二)
- Akka并发编程——1、Actor模型(一)