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
相关产品推荐
相关产品推荐

