我是 Python 的新手,我对这个问题做了一些研究,但我似乎找不到答案。
我有一个发送到数组的选择查询(Python 2.7)
query = "SELECT catalog_product_entity.sku "
query = query+"FROM catalog_product_entity "
query = query+"INNER JOIN catalog_product_entity_decimal "
query = query+"ON catalog_product_entity_decimal.entity_id = catalog_product_entity.entity_id "
query = query+"INNER JOIN catalog_product_entity_int "
query = query+"ON catalog_product_entity_int.entity_id = catalog_product_entity.entity_id "
query = query+"WHERE catalog_product_entity.sku IS NOT NULL "
query = query+"AND catalog_product_entity_int.attribute_id = '84'"
x = myconn.cursor()
x.execute(query)
skuArray = x.fetchall()
for i in skuArray:
print i
查询成功但显示为:('000381001238',),
如何格式化数组以显示为 ('000381001238'),?
我也试过这个:
for i in skuArray:
prodSku = [i[0] for in x.fetchall()]
print prodSku
关于性能的旁注,这个查询有超过 8000 个唯一值。
请您参考如下方法:
fetchall() 返回一个行列表,如果使用默认游标,则由元组表示。如果在 select 语句中只有一个列,只需通过索引获取它:
for row in x.fetchall():
print(row[0])
或者,如果您需要收集列表中的列值:
sku_values = [row[0] for row in x.fetchall()]
作为旁注,您不必使用 += 连接部分查询 - 您可以使用 Python 的多行字符串,作为奖励,您'将能够正确缩进您的查询以提高可读性:
query = """
SELECT catalog_product_entity.sku
FROM catalog_product_entity
INNER JOIN catalog_product_entity_decimal ON catalog_product_entity_decimal.entity_id = catalog_product_entity.entity_id
INNER JOIN catalog_product_entity_int ON catalog_product_entity_int.entity_id = catalog_product_entity.entity_id
WHERE catalog_product_entity.sku IS NOT NULL
AND catalog_product_entity_int.attribute_id = '84'
"""
