python - 在 Oracle 中使用以下划线开头的小写名称列时出现 SQLalchemy 数据库错误
问题描述
问题在于,如果表或列的名称以下划线开头并以小写形式编写,那么在 Oracle 的情况下,alchemy 会给出无效标识符数据库错误。以前我把所有的表名都写成大写,没有问题,但是现在添加了对Postgre的支持,大写有问题。
例如,
class Blah(blahblah_base):
_tablename_ = "_blahblah_"
_id_ = Column(INTEGER(), primary_key=True)
name = Column(String).
请帮助我找到更好的解决方案。
解决方案
我发现创建以下划线开头的 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,则返回所有其他数据库的小写
很可能这不是最好的解决方案,但它帮助了我
推荐阅读
- ios - 实现不同的细胞类型
- javascript - 这个css效果是怎么实现的?
- java - FXML 在其他选项卡中显示窗口
- javascript - JavaScript 查找字符串的“最新”版本
- groovy - Groovy:从两个范围创建一个二维数组
- html - height="x%" 不起作用
- api - Apostrophe CMS 中 api 调用的唯一字段类型和特定 GET 参数
- keras - 无效参数“class_mode”和 _make_train_function **self._function_kwargs)
- ruby-on-rails - Rails - 关联三个模型
- wpf - WPF 窗口背景图像中的 URI 路径