当前位置: 首页 > 知识库问答 >
问题:

python - flask-sqlalchemy 文档如何阅读 ?

桓宜
2023-04-27

请问代码中的 metadatas["auth"] 是什么..

with app.app_context():
    db.reflect()

class User:
    __table__ = db.metadatas["auth"].tables["user"]

共有1个答案

曹兴贤
2023-04-27

简答

metadatas["auth"]会返回这个auth数据库下的MetaData类,其中存储了多个表对象和它们关联的数据库中的对象。

解释

https://flask-sqlalchemy.palletsprojects.com/en/3.0.x/binds

通常会在项目一开始定义好数据库映射关系,用bind_key(如meta、auth)代表不同的数据库名,后面则为对应的数据库连接配置信息。

SQLALCHEMY_BINDS = {
    "meta": "sqlite:////path/to/meta.db",
    "auth": {
        "url": "mysql://localhost/users",
        "pool_recycle": 3600,
    },
}

之后定义每个表模型类时,则需指定__bind_key__ = "auth",表明表位于哪个数据库之中。

回到问题,上面的链接中有这样一段说明:

The default engine is SQLAlchemy.engine, and the default metadata is SQLAlchemy.metadata. SQLAlchemy.engines and SQLAlchemy.metadatas are dicts mapping all bind keys.

所以SQLAlchemy.metadatas是一个类似这样的结构:

{
    "meta": sqlalchemy.sql.schema.MetaData,
    "auth": sqlalchemy.sql.schema.MetaData,
}

对于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__变量,省去了一个一个地再去定义表字段的过程。

__table__ = db.metadatas["auth"].tables["user"]
 类似资料:
  • Flask-SQLAlchemy 是一个为您的 Flask 应用增加 SQLAlchemy 支持的扩展。它需要 SQLAlchemy 0.6 或者更高的版本。它致力于简化在 Flask 中 SQLAlchemy 的使用,提供了有用的默认值和额外的助手来更简单地完成常见任务。 Flask-SQLAlchemy 使用起来非常有趣,对于基本应用十分容易使用,并且对于大型项目易于扩展。有关完整的指南,请参

  • 入门 一个高级视图和设置。 Overview | Installation Guide | Frequently Asked Questions | Migration from 1.3 | Glossary | Error Messages | Changelog catalog 教程 SQLAlchemy 1.4 / 2.0 Transitional sqlalchemy2.0作为sqlalc

  • Python 的这个插件好难懂: 为什么通过框架返回的时候就是:Unexpect System Error - Object of type User is not JSON serializable 有什么好的学习资料么,真的好难懂

  • 问题内容: 我是flask和sqlalchemy的新手,我只是开始在flask应用程序上工作,现在我正在使用sqlalchemy。我想知道使用flask-sqlalchemy与sqlalchemy是否可以获得任何显着的好处。 问题答案: 主要功能是与Flask应用程序正确集成-它创建并配置引擎,连接和会话,并将其配置为与Flask应用程序一起使用。 此设置非常复杂,因为我们需要创建作用域会话并根据

  • SQLAlchemy 是 Python 编程语言下的一款开源软件。提供了 SQL 工具包及对象关系映射(ORM)工具,使用 MIT 许可证发行。

  • 在Flask Web应用程序中使用原始SQL对数据库执行CRUD操作可能很乏味。 相反,Python工具包SQLAlchemy是一个功能强大的OR映射器,为应用程序开发人员提供了SQL的全部功能和灵活性。 Flask-SQLAlchemy是Flask扩展,它将对SQLAlchemy的支持添加到Flask应用程序中。 什么是ORM(对象关系映射)? 大多数编程语言平台是面向对象的。 另一方面,RDB