我们在上一篇中说明了,如何在.net core的efcore中动态设置表名。
本文讲述如何在sqlalchemy中动态设置表名,使多个table可以对应到一个model文章来源:https://www.toymoban.com/news/detail-634888.html
- 表如下
- code example
from sqlalchemy import create_engine,Column,BigInteger,String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
base = declarative_base()
engine = create_engine("postgresql://postgresadmin:admin123@192.168.214.133:32222/postgresdb")
class Test(base):
__abstract__ = True #
id = Column(BigInteger,primary_key=True)
name = Column(String(255))
tablename = Column(String(255))
def __repr__(self) -> str:
return self.tablename
session = sessionmaker(bind=engine)
Session = session()
# build a model class with a specific table name
def get_model(tablename,schema):
Model = type(tablename, (Test,), {
'__tablename__': tablename,
'__table_args__':{"schema":schema}
})
return Model
model = get_model('test1','test')
value = Session.query(model).all()
for item in value:
print(item)
上述demo包含三步文章来源地址https://www.toymoban.com/news/detail-634888.html
- 在抽象模型类中定义表列
- 基于抽象模型构建一个模型类,并给它指定一个表名
- 像使用常规类一样使用构建的模型类。
到了这里,关于python sqlalchemy 动态设置表名__tablename__,一个model对应多个table的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!