首页 > 解决方案 > 在 Oracle 中使用以下划线开头的小写名称列时出现 SQLalchemy 数据库错误

问题描述

问题在于,如果表或列的名称以下划线开头并以小写形式编写,那么在 Oracle 的情况下,alchemy 会给出无效标识符数据库错误。以前我把所有的表名都写成大写,没有问题,但是现在添加了对Postgre的支持,大写有问题。

例如,

class Blah(blahblah_base): 
_tablename_ = "_blahblah_"

_id_ = Column(INTEGER(), primary_key=True)
name = Column(String).

请帮助我找到更好的解决方案。

标签: pythonoraclesqlalchemy

解决方案


我发现创建以下划线开头的 sql 实体名称存在问题,因此要创建这样的实体,您需要使用双引号,从而使其区分大小写。

因此,就我而言,需要一种解决方法来解决问题。这是我如何做到的示例:

class Files(base):
    __tablename__ = get_name("_files_")

    __id__ = Column(get_name("__id__"), INTEGER(), primary_key=True)
    file_name = Column(get_name("file_name"), String(256), nullable=False)
    file_type = Column(get_name("file_type"), String(32))

其中“get_name”是返回大写名称的函数,如果 db 类型是 oracle,则返回所有其他数据库的小写

很可能这不是最好的解决方案,但它帮助了我


推荐阅读