在SQLAlchemy ORM中动态变动表名

在开发过程当中,常常会遇到几张表结构相同,仅仅表名不同。这在直接使用SQL语句进行查询的环境中处理起来很简单,但若是使用了SQLAlchemy ORM以后,因在model定义时就肯定了表名,就须要用其余方法进行表名的变动。mysql

 

假定数据库中有两张表:user,user_1,下面用一个简单程序展现如何在查询时变动表名。sql

 

 使用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()

 

查询表1session

user = session.query(User).filter(User.name=='myname').all()

 

查询表2spa

User.__table__.name = 'users_1'

user = session.query(User).filter(User.name=='myname').all()
相关文章
相关标签/搜索