从多个表Python Mysql Conn查询

2024-06-28 20:08:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下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:我搜索了pythonmysql连接器,但没有找到任何与此相关的内容。你知道吗


Tags: andsqlgroupcsselectcgcodigopc
2条回答

for循环中的变量:(pc.patente, cs.cpc_group_codigo_cpc_group)是用户定义的;使用的名称与查询中的名称没有任何关系。因此,你可以叫他们任何你想要的。你可以考虑用(pc__patente, cs__cpc_group_codigo_cpc_group)或者别的什么。你知道吗

问题是python中的点表示法!=SQL中的点表示法。你知道吗

明白了,抱歉发了邮件。。 在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

相关问题 更多 >