下面是 Flask-SQLAlchemy 中存在的配置值。Flask-SQLAlchemy 从您的 Flask 主配置中加载这些值。 注意其中的一些在引擎创建后不能修改,所以确保尽早配置且不在运行时修改它们。

配置键

Flask-SQLAlchemy 扩展能够识别的配置键的清单:

SQLALCHEMY_DATABASE_URI

用于连接数据的数据库。例如:

  • sqlite:////tmp/test.db
  • mysql://username:password@server/db
SQLALCHEMY_BINDS 一个映射绑定 (bind) 键到 SQLAlchemy 连接 URIs 的字典。 更多的信息请参阅 绑定多个数据库
SQLALCHEMY_ECHO 如果设置成 True,SQLAlchemy 将会记录所有 发到标准输出(stderr)的语句,这对调试很有帮助。
SQLALCHEMY_RECORD_QUERIES 可以用于显式地禁用或者启用查询记录。查询记录 在调试或者测试模式下自动启用。更多信息请参阅 get_debug_queries()
SQLALCHEMY_NATIVE_UNICODE 可以用于显式地禁用支持原生的 unicode。这是 某些数据库适配器必须的(像在 Ubuntu 某些版本上的 PostgreSQL),当使用不合适的指定无编码的数据库 默认值时。
SQLALCHEMY_POOL_SIZE 数据库连接池的大小。默认是数据库引擎的默认值 (通常是 5)。
SQLALCHEMY_POOL_TIMEOUT 指定数据库连接池的超时时间。默认是 10。
SQLALCHEMY_POOL_RECYCLE 自动回收连接的秒数。这对 MySQL 是必须的,默认 情况下 MySQL 会自动移除闲置 8 小时或者以上的连接。 需要注意地是如果使用 MySQL 的话, Flask-SQLAlchemy 会自动地设置这个值为 2 小时。
SQLALCHEMY_MAX_OVERFLOW 控制在连接池达到最大值后可以创建的连接数。当这些额外的 连接回收到连接池后将会被断开和抛弃。
SQLALCHEMY_TRACK_MODIFICATIONS 如果设置成 True (默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。这需要额外的内存, 如果不必要的可以禁用它。

New in version 0.8: 增加 SQLALCHEMY_NATIVE_UNICODESQLALCHEMY_POOL_SIZE,SQLALCHEMY_POOL_TIMEOUT 和 SQLALCHEMY_POOL_RECYCLE 配置键。

New in version 0.12: 增加 SQLALCHEMY_BINDS 配置键。

New in version 0.17: 增加 SQLALCHEMY_MAX_OVERFLOW 配置键。

New in version 2.0: 增加 SQLALCHEMY_TRACK_MODIFICATIONS 配置键。

连接 URI 格式

完整连接 URI 格式列表请跳转到 SQLAlchemy 下面的文档(支持的数据库)。这里展示了一些常见的连接字符串。

SQLAlchemy 把一个引擎的源表示为一个连同设定引擎选项的可选字符串参数的 URI。URI 的形式是:

dialect+driver://username:password@host:port/database

该字符串中的许多部分是可选的。如果没有指定驱动器,会选择默认的(确保在这种情况下  包含 + )。

Postgres:

postgresql://scott:tiger@localhost/mydatabase

MySQL:

mysql://scott:tiger@localhost/mydatabase

Oracle:

oracle://scott:tiger@127.0.0.1:1521/sidname

SQLite (注意开头的四个斜线):

sqlite:////absolute/path/to/foo.db

使用自定义的元数据和命名约定

你可以使用一个自定义的 MetaData 对象来构造 SQLAlchemy 对象。这允许你指定一个 自定义约束命名约定。这样做对数据库的迁移是很重要的。因为 SQL 没有定义一个标准的命名约定,无法保证数据库之间实现是兼容的。你可以自定义命名约定像 SQLAlchemy 文档建议那样:

from sqlalchemy import MetaData
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy convention = {
"ix": 'ix_%(column_0_label)s',
"uq": "uq_%(table_name)s_%(column_0_name)s",
"ck": "ck_%(table_name)s_%(constraint_name)s",
"fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s",
"pk": "pk_%(table_name)s"
} metadata = MetaData(naming_convention=convention)
db = SQLAlchemy(app, metadata=metadata)

最新文章

  1. Codeforces Round #353 (Div. 2) ABCDE 题解 python
  2. LINUX下YUM源配置
  3. apache flink 入门
  4. PHP指定字段的多维数组排序方法
  5. Deep Learning(深度学习)学习笔记整理(二)
  6. opencv 图像轮廓
  7. 使用jQuery.FileUpload插件和服Backload组件自定义上传文件夹
  8. .NET EF 访问Oracle之问题小结
  9. asp.net中bin目录下的 dll.refresh文件
  10. ctr预估模型
  11. NSOutputStream\NSInputStream
  12. SWOT分析法
  13. redis在java项目中的使用
  14. js 跨域问题 汇总
  15. docker环境 mysql读写分离 mycat maxscale
  16. CCF CSP 201604-1 折点计数
  17. Cookie保存中文用户名报错(500)
  18. 根据href给当前导航添加样式
  19. libxml2.dylb 罗致<libxml/tree.h> 老是找不到头文件
  20. oracle 以及 sql server mysql 空值默认值修改

热门文章

  1. 开始我的GL离屏渲染绑定[转]
  2. log4net报错Could not load type 'System.Security.Claims.ClaimsIdentity'
  3. ZOJ 3626 Treasure Hunt I(树形dp)
  4. web前端面试系列 - 算法( 数组去重 )
  5. kubernetes 之QoS服务质量管理
  6. Fedora 25/24/23 nVidia Drivers Install Guide
  7. js json按key值排序
  8. 网络协议之rtp---h264的rtp网络协议实现
  9. 在Android中使App高速、简单地支持新浪微博、微信、QQ、facebook等十几个主流社交平台的分享功能
  10. TCP协议和socket API 学习笔记