【问题标题】:SQLAlchemy MetaData().reflect() with column attribute lowercase [duplicate]SQLAlchemy MetaData().reflect(),列属性小写[重复]
【发布时间】:2021-06-29 09:16:58
【问题描述】:

有没有办法使用 sqlalchemy 反射强制列属性名称为小写?

metadata = sa.MetaData()
metadata.reflect(session.conn)

原样:

metadata.tables['table'].columns.DATARIF

希望:

metadata.tables['table'].columns.datarif

【问题讨论】:

  • 某些方言会自动执行“名称规范化”。你用的是哪种方言?
  • sql server、oracle、postrgresql 和 db2。问题是我想对所有数据库使用相同的代码。 sql server 将列保存为 DATARIF,oracle 保存为 datarif。
  • 您可以使用一个事件来执行此操作(规范化列键),我认为这里有一个现有的 Q/A 来说明如何使用它。试图找到它。
  • @event 有效!谢谢

标签: python reflection sqlalchemy orm


【解决方案1】:
def import_db_tables(self):
        self.set_metadata(sa.MetaData())
        @event.listens_for(sa.Table, "column_reflect")
        def reflect_col(inspector, table, column_info):
            column_info['key'] = column_info['name'].lower()
        self.metadata.reflect(self.conn)

【讨论】:

    猜你喜欢
    • 2016-04-29
    • 2017-01-29
    • 2017-01-25
    • 2015-12-14
    • 2015-08-12
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多