如果我不清楚,我提前道歉,英语不是我的母语。如果我犯了太多错误,请随时告诉我:)
我是使用flask_sqlalchemy的新手,在互联网上花费数小时寻找答案后感到沮丧。
我想要的是做一个这样的查询:
ModelName.query.filter_by(name='something').all()
Run Code Online (Sandbox Code Playgroud)
但不是使用 ModelName 我想做这样的事情:
model_list = ['Model1', 'Model2', 'Model3']
for model in model_list:
some_var = model.query.filter_by(name='something').all()
# do some stuff with the variable
Run Code Online (Sandbox Code Playgroud)
错误是:
'str' object has no attribute 'query'
Run Code Online (Sandbox Code Playgroud)
在尝试将 db.session.add() 与字符串变量一起使用时,我当然遇到了同样的问题。
我知道查询需要某种 _BoundDeclarativeMeta 对象而不是字符串,但是如何从列表中获取该对象以将其传递给 for 循环?
我尝试使用 'db.metadata.tables[my_variable]' 但我得到了一个 Table 对象而不是一个 _BoundDeclarativeMeta 对象,它的工作方式不一样。
我设法使用
db.session.query(db.metadata.tables[my_variable])
Run Code Online (Sandbox Code Playgroud)
代替
my_variable.query
Run Code Online (Sandbox Code Playgroud)
但我不能将这种方法用于“db.session.add()”(或者有可能吗?)
有什么方法可以将字符串变量“转换”为正确类型的 sqlalchemy 对象?