请问代码中的 metadatas["auth"]
是什么..
with app.app_context():
db.reflect()
class User:
__table__ = db.metadatas["auth"].tables["user"]
请问代码中的 metadatas["auth"]
是什么..
with app.app_context():
db.reflect()
class User:
__table__ = db.metadatas["auth"].tables["user"]
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答2.9k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
简答
metadatas["auth"]
会返回这个auth
数据库下的MetaData
类,其中存储了多个表对象和它们关联的数据库中的对象。解释
https://flask-sqlalchemy.palletsprojects.com/en/3.0.x/binds
通常会在项目一开始定义好数据库映射关系,用bind_key(如meta、auth)代表不同的数据库名,后面则为对应的数据库连接配置信息。
之后定义每个表模型类时,则需指定
__bind_key__ = "auth"
,表明表位于哪个数据库之中。回到问题,上面的链接中有这样一段说明:
所以
SQLAlchemy.metadatas
是一个类似这样的结构:对于
MetaData
类:A collection of Table objects and their associated schema constructs
. 它也只是一个集合,存储了多个表对象和它们关联的数据库中的对象而它有一个
tables
属性,会返回A dictionary of Table objects keyed to their name or “table key”
,就是一个表对象key与它对应的表对象的映射因此这一整行其实就是将
auth
对应的数据库内的user
对应的数据表对象赋值给了__table__
变量,省去了一个一个地再去定义表字段的过程。