gpt4 book ai didi

mysql - 类型错误 : cannot concatenate 'str' and 'tuple' objects while using pymysql. 游标

转载 作者:行者123 更新时间:2023-11-29 10:08:04 25 4
gpt4 key购买 nike

我从事Python工作。我有一个查询,我的数据库中有 3 个表。

  1. 我已连接到数据库,并从 mysql 表中取出两列(idnum,clientname)中的所有行,例如(1234,雷诺兹),(1235,雷诺兹2)

  2. 然后每个 idnum 都有一个单独的表,例如Sample_divya_1234;sample_divya_1235,我们需要从每个表中获取所有电子邮件和 lname。 (注意:每个idnum都有很多email和lname记录)

  3. 步骤 1 中获取的所有客户端名称都存在于另一个表 example_divya3 中,因此对于每个客户端名称,需要提取 fname,例如(saha、renolds)

  4. 现在 email、lname、fname 必须全部放入新表 sql_table1

输入表

Sample_divya1:

+-----+------------+---
| idnum | clientname |
+-------+------------+-
| 1234 | renold |
| 1235 | renold1 |
+-------+------------+

sample_divya_1234:

+-------------------+----------+
| email | lname |
+-------------------+----------+
| abc@yahoo.com | abcd |
| bcd@gmail.com | bcda |
+-------------------+----------+
**sample_divya_1235**
+------------------+-----------+
| email | lname |
+------------------+-----------+
| xyz@gmail.com | xyza |
| nag@gmail.com | sai |
| hij@gmail.com | klm |
+------------------+-----------+

sample_divya3:

+--------+------------+
| fname | clientname |
+--------+------------+
| saha | renold |
| hasini | renold1 |
+--------+------------+

PRG:

import pandas as pd
import pymysql
import pymysql.cursors
from sqlalchemy import create_engine
from time import time
import datetime

conn=pymysql.connect(CONNECTDETAILS)
query = "select idnum from sample_divya1"
cursor=conn.cursor()
cursor.execute(query)
data = cursor.fetchall()
cursor.execute("drop table if exists sql_table1")
sql_table = "create table sql_table1(email varchar(128),lname varchar(128),fname varchar(128))"
cursor.execute(sql_table)


for id in data:
cursor.execute("select A.idnum, B.fname, B.clientname,C.lname,C.email from (select idnum,clientname from sample_divya1)A cross join (select fname,clientname from sample_divya3 )B where A.clientname=B.clientname cross join (select email, lname from sample_divya_"+id[0]+")C where A.idnum =id")
data_1=cursor.fetchall()
conn.commit()
print data_1
cursor.executemany("insert into sql_table1 (email,lname,fname) values (?,?,?)",data_1)
conn.commit()
conn.commit()

所需输出:

+------------------+----------+--------+
| email | lname | fname |
+------------------+----------+--------+
| abc@yahoo.com | abcd | saha |
| bcd@gmail.com | bcda | saha |
| xyz@gmail.com | xyza | hasini |
| nag@gmail.com | sai | hasini |
| hij@gmail.com | klm | hasini |

错误出现在查询的突出显示部分

"""#cursor.execute("select B.fname,C.lname,C.email from (select idnum,clientname from sample_divya1)A 交叉连接 (select fname,clientname from sample_divya3 )B where A.clientname= B.clientname 交叉连接(选择电子邮件,lname from sample_divya_"+id[0]+")C 其中 A.idnum = id")"""

在这里跟踪并了解到““where 子句中的未知列 'id'””那么有人可以帮忙解决这个 where 子句

最佳答案

它是 for id in data: 之后行的字符串连接。 id 是一个数组(它是 select idnum from sample_divya1 返回的行)。

将代码更改为:

for id in data:
cursor.execute("select A.idnum, B.fname, B.clientname,C.lname,C.email from (select idnum,clientname from sample_divya1)A cross join (select fname,clientname from sample_divya3 )B where A.clientname=B.clientname cross join (select email, lname from sample_divya_"+id[0]+")C where A.idnum =id")

请注意 id[0] 而不是 id。现在,它应该包含查询 select idnum from sample_divya1 中所需的 idnum

如果您遇到问题,请将生成的查询分配给一个变量并在执行之前打印它。亲眼检查它,然后尝试从 MySQL 命令行运行它。

关于mysql - 类型错误 : cannot concatenate 'str' and 'tuple' objects while using pymysql. 游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51522716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com