【问题标题】:Get SQL data type from sqlalchemy model从 sqlalchemy 模型中获取 SQL 数据类型
【发布时间】:2018-06-26 09:29:33
【问题描述】:

我正在尝试为使用 sqlalchemy 创建的数据库生成文档,并希望包含依赖于当前引擎的列 SQL 数据类型。有没有办法从 sqlalchemy 中提取这个?我尝试追踪metadata.create_all(engine) 兔子洞,但很快就迷路了。

基本上我所追求的是映射:

{
    'Integer': 'INT',
    'String': 'VARCHAR',
    ...
}

特定于当前引擎,将 sqlalchemy 类型转换为 SQL 数据类型。

【问题讨论】:

  • 您的意思是您正在使用generic types 并想知道它们实际编译成什么?
  • 是的,我已更新问题以使其更清晰。

标签: python sqlalchemy


【解决方案1】:

您可以创建/使用方言实例及其类型编译器:

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)'

【讨论】:

  • 完美!这正是我所追求的,而且比我希望的要简单得多。 :)
猜你喜欢
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 2014-09-17
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 2020-01-25
  • 2014-12-18
相关资源
最近更新 更多