我正在使用SQLAlchemy处理来自API端点的请求;我的数据库表(我有数百个)通过唯一的字符串(例如test_table_123)进行区分……
在下面的代码中,__tablename__是静态的。如果可能的话,我希望根据我想要检索的特定表进行更改,因为编写数百个唯一的类将是单调乏味的。
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()非常感谢您提前抽出时间。
发布于 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__构造模型。您可以按需创建所有表,而不是一次创建所有表。
https://stackoverflow.com/questions/59534644
复制相似问题