在SQLAlchemy ORM中动态变更表名
Posted web-fusheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQLAlchemy ORM中动态变更表名相关的知识,希望对你有一定的参考价值。
在开发过程中,经常会遇到几张表结构相同,仅仅表名不一样。这在直接使用SQL语句进行查询的环境中处理起来很简单,但如果使用了SQLAlchemy ORM之后,因在model定义时就确定了表名,就需要用其他方法进行表名的变更。
假定数据库中有两张表:user,user_1,下面用一个简单程序展示如何在查询时变更表名。
使用declarative_base定义的model
from sqlalchemy import create_engine from sqlalchemy import Table, Column, Integer, String, MetaData from sqlalchemy.orm import sessionmaker metadata = MetaData() from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class User(Base): __tablename__ = ‘users‘ __table_args__ = { ‘mysql_engine‘: ‘InnoDB‘, ‘mysql_charset‘: ‘utf8‘ } id = Column(Integer, primary_key=True) name = Column(String(30)) fullname = Column(String(120)) password = Column(String(30)) engine = create_engine(‘mysql://root:@127.0.0.1/test?charset=utf8‘, echo=True) Session = sessionmaker(bind=engine) session = Session()
查询表1
user = session.query(User).filter(User.name==‘myname‘).all()
查询表2
User.__table__.name = ‘users_1‘ user = session.query(User).filter(User.name==‘myname‘).all()
以上是关于在SQLAlchemy ORM中动态变更表名的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 SQLAlchemy ORM 中使用动态关系(或视图)吗?