zoukankan      html  css  js  c++  java
  • 在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()
  • 相关阅读:
    HDU-ACM课堂作业 Degree Sequence of Graph G & Frogs' Neibroghood
    HDU-ACM课堂作业 Least Common Multiple
    HDUOJ 悼念512汶川大地震遇难同胞——老人是真饿了
    HDUOJ 1236 排名
    HDUOJ Quicksum
    HDUOJ 2560 The Seven Percent Solution
    1255 迷宫问题
    1253 抓住那头牛
    1254 走出迷宫
    1252:走迷宫
  • 原文地址:https://www.cnblogs.com/web-fusheng/p/10862743.html
Copyright © 2011-2022 走看看