使用Sequel Gem访问PostgreSQL Schema遇标识符识别异常
解决Sequel访问PostgreSQL指定Schema的问题
问题出在Sequel的默认符号访问逻辑上:
Sequel[:x][:y]这种写法默认对应表.列的映射,不是你想的schema.表,所以第一个符号会被识别为表名,第二个为列名,嵌套三层时第三个自然也被当成列。正确指定Schema的两种实用写法:
- 用
Sequel.qualify明确区分schema和表:# 定位到指定schema下的目标表 target_table = Sequel.qualify(:your_schema_name, :your_table_name) # 查询该表的指定列 DB[target_table].select(:target_column) - 直接通过数据库对象的
[]方法用双下划线连接schema和表:# 双下划线会被Sequel解析为schema与表的分隔符 target_table = DB[:your_schema_name__your_table_name] # 同样可以指定列查询 DB[target_table].select(:target_column)
- 用
可以打印生成的SQL验证是否正确:
puts DB[Sequel.qualify(:sales, :orders)].select(:order_id).sql # 正确输出应该是: SELECT "order_id" FROM "sales"."orders"
内容的提问来源于stack exchange,提问作者Justinus Adriaanse
相关产品推荐
相关产品推荐

