python - 从 sqlalchemy 模型中获取 SQL 数据类型
问题描述
我正在尝试为使用 sqlalchemy 创建的数据库生成文档,并希望包含依赖于当前引擎的列 SQL 数据类型。有没有办法从 sqlalchemy 中提取这个?我试着跟着metadata.create_all(engine)
兔子洞走,但很快就迷路了。
基本上我所追求的是一个映射:
{
'Integer': 'INT',
'String': 'VARCHAR',
...
}
它特定于当前引擎,并将 sqlalchemy 类型转换为 SQL 数据类型。
解决方案
您可以创建/使用方言实例及其类型编译器:
In [18]: engine = create_engine('postgresql://sdf:sdf@localhost/sdf')
In [19]: types.Unicode().compile(dialect=engine.dialect)
Out[19]: 'VARCHAR'
请注意,您也可以Dialect
在没有引擎的情况下创建相关的子类实例:
In [20]: from sqlalchemy.dialects import mssql
In [21]: d = mssql.dialect()
In [22]: types.Unicode(32).compile(dialect=d)
Out[22]: 'NVARCHAR(32)'
推荐阅读
- android - 用于位置跟踪的前台服务与 WorkManager
- javascript - Vuex:Firebase 路由。如果语句
- json - 遍历 JSONObject
- c# - 如果内容页不包含,则仅在母版页中包含表单标签
- solr - 在使用模式的 solr 中如何在新字段中复制最低价格
- java - 我们如何创建其他枚举的 ENUM 联合
- r - 很简单,为什么 (-1)^(1/3) 在函数中使用时返回 NaN?
- javascript - 如何在 PHP 中解析通过 AJAX 发送的嵌套 JSON
- html - 防止表格垂直拉伸以填满表格
- python-3.x - 字体和 unicode - python 中的 PIL