You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

flask_sqlalchemy对接Oracle19c时Order表生成小写带双引号问题求助

问题根源

order是Oracle数据库的保留关键字,SQLAlchemy检测到标识符为数据库保留字时,会自动添加双引号包裹以规避语法冲突,这是该表需要带双引号才能访问的核心原因,和大小写敏感性配置无关。

解决方法

优先推荐修改表名避免和保留字冲突,修改步骤如下:

  1. 给Order模型显式指定非保留字的表名,参考代码:
class Order(db.Model):
    __tablename__ = 'orders' # 可替换为order_info等其他非关键字名称
    # 原有字段定义保持不变
    id = db.Column(db.Integer, primary_key=True)
    order_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    # ...剩余字段代码不变
  1. 同步修改所有关联该表的外键配置:
    调整中间表order_product的外键关联,和新表名对应:
    order_product = db.Table('order_product',
                             db.Column('order_id', db.Integer, db.ForeignKey('orders.id'), primary_key=True),
                             db.Column('product_id', db.Integer, db.ForeignKey('product.id'), primary_key=True)
                             )
    
  2. 删除数据库中已生成的"order"表,重新执行表创建操作即可。新生成的表不会被自动加双引号,可直接通过select * from orders正常访问。

你现有配置中的case_sensitive=False已经符合要求,无需额外调整连接字符串相关配置。

内容的提问来源于stack exchange,提问作者Gustavo Leig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:36:01