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

Python使用cursor查询含连字符的数据库列名的解决方案咨询

Python操作数据库含连字符列名的取值方案

Python合法标识符不支持包含连字符-,你写r.seller-sku时解释器会将其识别为r.seller 减 sku的运算逻辑,因此无法直接用点语法取值,可通过以下三种方案解决:

  • 方案1:类字典方式取值
    绝大多数数据库驱动返回的行对象、以及你使用的reg转换后的对象都支持键值对取值,直接将列名作为字符串传入方括号即可:
sku_seller_sku = r['seller-sku']
  • 方案2:SQL查询时设置别名
    查询阶段给含特殊字符的列设置符合Python命名规范的别名,后续可以直接用点语法取值,可读性和兼容性最好:
cursor = db.cursor()
# 修改查询语句,给含连字符的列加别名,注意列名要用反引号包裹避免语法错误
cursor.execute("SELECT *, `seller-sku` AS seller_sku FROM tbl_inventory_data WHERE `ain`=%s AND `user`=%s", (AIN, SellerId)) 
db.commit()

for row in cursor.fetchall():
     r = reg(cursor, row)
     sku_time = r.time_offer_changed
     sku_seller_sku = r.seller_sku # 直接用别名取值即可
  • 方案3:用内置getattr函数取值
    如果reg返回的对象不支持字典取值,可以用Python通用的属性获取函数getattr读取任意名称的属性:
sku_seller_sku = getattr(r, 'seller-sku')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:15:02