Oracle和SQLAlchemy连接时出现区分大小写的错误

时间:2014-09-15 13:47:52

标签: python sql oracle sqlalchemy

我有一个Oracle 11g数据库,我用SQLAlchemy 0.9.7查询,我的数据库有一个表调用网关,它有一个名为id_gateway的主键列区分大小写,所以我必须像这样手动查询:

SELECT "id_gateway" FROM gateway;

我有这个问题:

psp_data = query(
    default_forma_pago_web.id_gateway,
    psp_config.merchant_id,
    psp_config.merchant_id_sc,
    psp_config.email
    ).join(
    psp_config,
    psp_config.id_productora == default_forma_pago_web.id_productora
    ).join(
    gateway,
    gateway.id_gateway == default_forma_pago_web.id_gateway
    ).filter(
    default_forma_pago_web.id_productora == self.productora,
    default_forma_pago_web.id_forma_pago == self.medio_de_pago,
    default_forma_pago_web.cuotas == self.cuotas
    )

编辑,因为我选择了错误的查询。

我收到了这个错误:

*** sqlalchemy.exc.DatabaseError: (DatabaseError) ORA-00904: "GATEWAY"."ID_GATEWAY": invalid identifier

这是表的架构:

class Gateway(Base):
    __tablename__ = u'gateway'

    id_gateway = Column(String(6), primary_key=True)
    url_produccion = Column(String(255), nullable=False)
    url_implementacion = Column(String(255))
    lang_es = Column(String(5))
    lang_en = Column(String(5))

t_psp_config = Table(
    u'psp_config', metadata,
    Column(u'id', String(20), primary_key=True),
    Column(u'id_productora', ForeignKey(u'productora.id_productora'), nullable=False),
    Column(u'merchant_id', String(20)),
    Column(u'email', String(255)),
    Column(u'merchant_id_sc', String(20)),
    Column(u'id_gateway', String(6)),
    Column(u'debug', Numeric(1, 0, False)),
    Column(u'moneda', String(10)),
    Column(u'pais', String(20))
)

class DefaultFormaPagoWeb(Base):
    __tablename__ = u'default_forma_pago_web'
    __table_args__ = (
        ForeignKeyConstraint(
            [u'id_gateway', u'id_forma_pago'],
            [u'forma_pago_x_gateway.id_gateway', u'forma_pago_x_gateway.id_forma_pago']
            ),
    )

    id_forma_pago_web = Column(Numeric(scale=0, asdecimal=False), primary_key=True, nullable=False)
    id_productora = Column(ForeignKey(u'productora.id_productora'), primary_key=True, nullable=False)
    id_forma_pago = Column(String(20), primary_key=True, nullable=False)
    id_gateway = Column(String(20), primary_key=True, nullable=False)
    cuotas = Column(Numeric(scale=0, asdecimal=False), primary_key=True, nullable=False)
    diferencial = Column(Numeric(8, 2))
    es_porcentual = Column(Numeric(1, 0, False))

    forma_pago_x_gateway = relationship(u'FormaPagoXGateway')
    productora = relationship(u'Productora')

如何将此表与区分大小写的列连接?

0 个答案:

没有答案