首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改SQLAlchemy __tablename__

更改SQLAlchemy __tablename__
EN

Stack Overflow用户
提问于 2019-12-31 01:29:21
回答 1查看 595关注 0票数 0

我正在使用SQLAlchemy处理来自API端点的请求;我的数据库表(我有数百个)通过唯一的字符串(例如test_table_123)进行区分……

在下面的代码中,__tablename__是静态的。如果可能的话,我希望根据我想要检索的特定表进行更改,因为编写数百个唯一的类将是单调乏味的。

代码语言:javascript
复制
from config import db, ma  # SQLAlchemy is init'd and tied to Flask in this config module

class specific_table(db.Model):
        __tablename__ = 'test_table_123'
        var1 = db.Column(db.Integer, primary_key=True)
        var2 = db.Column(db.String, index=True)
        var3 = db.Column(db.String)

class whole_table_schema(ma.ModelSchema):
        class Meta:
                model = specific_table
                sqla_session = db.session

def single_table(table_name):

        # collect the data from the unique table
        my_data = specific_table().query.order_by(specific_table.level_0).all()

非常感谢您提前抽出时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-02 15:46:55

您可以使用SQLAlchemy的reflect功能。

engine = db.engine

metadata = MetaData()

metadata.reflect(bind=engine)

最后是db.session.query(metadata.tables[table_name])

如果您想要更流畅的查询体验,因为以前的解决方案不能提供这种体验,您可以声明并映射表:tables = {table_name: create_table(table_name) for table_name in table_names},其中create_table使用不同的__tablename__构造模型。您可以按需创建所有表,而不是一次创建所有表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59534644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档