我有以下sql查询:
SELECT
pc.patente,
cs.cpc_group_codigo_cpc_group
FROM
patente_pc pc
,
patente_cpc cpc,
cpc_subgroup cs,
cpc_group cg
WHERE
pc.codigo_patente_pc = cpc.patente_pc_codigo_patente_pc AND
cpc.cpc = cs.codigo_cpc_subgroup AND
cs.cpc_group_codigo_cpc_group = cg.codigo_cpc_group
GROUP BY
pc.patente, cs.cpc_group_codigo_cpc_group
我将此查询添加到python中,逐行分隔元组中的字符串以使语法没有问题。 并且它正确执行
但是当我需要检索数据时,我使用
lista_cpcs = []
lista_patentes = []
for (pc.patente, cs.cpc_group_codigo_cpc_group) in cursor:
lista_cpcs.append(cs.cpc_group_codigo_cpc_group)
lista_patentes.append(pc.patente)
return [lista_cpcs, lista_patentes]
我收到错误Global name 'pc' is not defined
我发生了什么,它将pc和cs解释为python模块,但它们来自sql .. 如何在这工作? Ps:我搜索python mysql连接器,但没有找到任何相关内容。
答案 0 :(得分:0)
for
循环中的变量:(pc.patente, cs.cpc_group_codigo_cpc_group)
是用户定义的;使用的名称与查询中的名称无关。因此,您可以随意调用它们。您可以考虑使用(pc__patente, cs__cpc_group_codigo_cpc_group)
或其他内容。
问题是python中的点符号!=来自SQL的点符号。
答案 1 :(得分:0)
知道了,对不起该帖子.. 在https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-description.html中搜索 我学会了游标的一些属性,并使用Eclipse调试器,我看到它只是名称,而不是表连接。所以我使用
for (patente, cpc_group_codigo_cpc_group) in cursor:
lista_cpcs.append(cpc_group_codigo_cpc_group)
lista_patentes.append(patente)
现在正在运行,感谢@Scott的帮助