在開發過程當中,常常會遇到幾張表結構相同,僅僅表名不同。這在直接使用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()