码迷,mamicode.com
首页 > 数据库 > 详细

在SQLAlchemy ORM中动态变更表名

时间:2019-05-14 16:27:33      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:column   127.0.0.1   root   ESS   需要   mys   查询   query   其他   

在开发过程中,经常会遇到几张表结构相同,仅仅表名不一样。这在直接使用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中动态变更表名

标签:column   127.0.0.1   root   ESS   需要   mys   查询   query   其他   

原文地址:https://www.cnblogs.com/web-fusheng/p/10862743.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!