【问题标题】:Db2 with SQLAlchemy, how to specify default schema带有 SQLAlchemy 的 Db2,如何指定默认模式
【发布时间】:2014-02-20 21:36:20
【问题描述】:

我正在尝试将现有的 DB2 数据库映射到新的 Python ORM 对象。 我写了一个非常简单的映射器类:

class Storage(Base):

    __tablename__ = 'T_RES_STORAGE_SUBSYSTEM'        

    id = Column(Integer,primary_key=True,name='SUBSYSTEM_ID')
    name = Column(String(255),name='NAME')
    namealias = Column(String(256),name='NAME_ALIAS')

但是当我尝试映射它时,通过执行查询,它会将DB2ADMIN.tablename 放在每个查询的前面,这当然会导致错误。如果我通过在其前面加上 TPC.tablename 手动执行查询,那么一切正常。

如何在表定义中指定要使用的架构?

【问题讨论】:

  • 你所说的“表空间”实际上是一个模式。我相应地编辑了问题。
  • 谢谢,我不知道怎么称呼它:/
  • 在您更正后找到了解决方案:D 谢谢先生

标签: python sqlalchemy db2


【解决方案1】:

好的,在mustaccio的帮助下,我发现在table_args中你必须添加schema

class Storage(Base):

    __tablename__ = 'T_RES_STORAGE_SUBSYSTEM'
    __table_args__ = {'schema' : 'TPC'}

    id = Column(Integer,primary_key=True,name='SUBSYSTEM_ID')
    name = Column(String(255),name='NAME')
    namealias = Column(String(256),name='NAME_ALIAS')

【讨论】:

  • 正是我想要的。跨多个模式重用对象的任何好主意? (在具有跨模式重复表的系统上工作 -> customer1schema.infotable,customer2schema.infotable,...)
  • 发现这个来改变架构 - stackoverflow.com/questions/29595161/…
猜你喜欢
  • 2014-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2019-06-13
  • 2018-03-07
相关资源
最近更新 更多