Python 使用pymysql.cursor()将元组值插入mysql表
步骤1:首先,我连接到一个数据库,并从mysql表中取出两列中的所有行(idnum,clientname) 例如:(1234,雷诺兹),(1235,雷诺兹2) 步骤2:然后每个idnum都有一个单独的表 Eg:sample_divya_1234;样本号为1235, 我们需要从每个表中提取所有电子邮件和电子邮件。Python 使用pymysql.cursor()将元组值插入mysql表,python,mysql-python,pymysql,Python,Mysql Python,Pymysql,步骤1:首先,我连接到一个数据库,并从mysql表中取出两列中的所有行(idnum,clientname) 例如:(1234,雷诺兹),(1235,雷诺兹2) 步骤2:然后每个idnum都有一个单独的表 Eg:sample_divya_1234;样本号为1235, 我们需要从每个表中提取所有电子邮件和电子邮件。 (注意:每个idnum都有许多电子邮件和lname记录) 步骤3:步骤1中获取的所有clientname都存在于另一个表示例3中,因此每个clientname都需要提取fname 例如:
(注意:每个idnum都有许多电子邮件和lname记录) 步骤3:步骤1中获取的所有clientname都存在于另一个表示例3中,因此每个clientname都需要提取fname 例如:(萨哈,雷诺德) 步骤4:现在必须将电子邮件、lname、fname全部放入新表sql\u表1中 进展: 获取输出:
+-------+------------+---
| idnum | clientname |
+-------+------------+-
| 1234 | renold |
| 1235 | renold1 |
+-------+------------+
但需要输出:
+-------+------------+---
| idnum | clientname |
+-------+------------+-
| 1234 | renold |
| 1235 | renold1 |
+-------+------------+
输入表:
示例分区1:
+-------+------------+---
| idnum | clientname |
+-------+------------+-
| 1234 | renold |
| 1235 | renold1 |
+-------+------------+
sample\u divya\u 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 |
+--------+------------+
请帮帮我试试这个
self.cursor.execute("insert ignore into " + options.youtube_table_name + " (" + ",".join(data.keys()) + ") values (" + ','.join(['%s' for column_name in data.keys()]) + ")", data.values())
数据应该是字典请尝试以下操作
for id, client in data:
print "==========="
data = " select email,lname from sample_divya_"+id
cursor.execute(data)
conn.commit()
df = cursor.fetchall()
# print df
list_id = "select fname from sample_divya3 where clientname='{}'".format(
client)
cursor.execute(list_id)
conn.commit()
data1 = cursor.fetchall()
print df
print "------------"
print data1
print "~~~~~~~~~~~~~~~~~"
data2= data1* len(df)
print zip(df,data2)
for x ,y in zip(df,data2):
dat = """insert into sql_table1 values (%s,%s,%s)""", (x[0], x[1],y[0])
print dat
# dat = """insert into sql_table1 values (%s,%s,%s)""", (
# df[0][0], df[0][1], data1[0][0])
# cursor.execute("""insert into sql_table1 values (%s,%s,%s)""",
# (df[0][0], df[0][1], data1[0][0]))
# conn.commit()
# dat_1 = cursor.fetchall()
# print dat
conn.commit()
conn.close()
===========================================
输出:
===========
('insert into sql_table1值(%s,%s,%s)',('divya@gmail.com","赛","哈西尼")
('insert into sql_table1值(%s,%s,%s)',('sainag@gmail.com“,”纳甘德拉“,”哈西尼“)
('insert into sql_table1值(%s,%s,%s)',('venu@gmail.com","维努戈帕尔","哈西尼")
===========
('insert into sql_table1值(%s,%s,%s)',('pavan@yahoo.com","伊纳甘蒂","萨哈")
('insert into sql_table1值(%s,%s,%s)',('sahasra@gmail.com","萨哈斯拉","萨哈")
===========
('insert into sql_table1值(%s,%s,%s)',('gopal@gmail.com“,”维努戈帕尔“,”中国“)
('insert into sql_table1值(%s,%s,%s)',('vishnu@gmail.com","毗湿奴","钦")
===========
说明:
在上面的代码中,zip(A,B)将元组的长度切片为较小元组对象的长度。所以我通过复制元组来匹配元组的长度。另外,请注意,此解决方案仅在表sample\u divya3中的所有客户机\u num只有一个fname时有效
例如:
>>> A=((1,2),(2,3))
>>> B=(('A',))
>>> zip(A,B)
[((1, 2), 'A')]
终于明白了:
for id,filename,name,client in data_1:
sql="select '{}',email,lname from sample_divya_{}".format(name,id)
cursor.execute(sql)
data_2=cursor.fetchall()
conn.commit()
data=list(data_2)
df=pd.DataFrame(data)
试图将所有内容放在一个查询中,从两个表中提取数据。
对于元组插入,我首先将元组转换为一个列表,然后将其转换为一个datafram,并将其放在csv中,您可以用下一种方法来完成
cursor.execute("insert into sql_table1 values %s", (your_tuple,))
重要的是
您的_tuple
应该是tuple()
而不是list()
嗨,我已经更新了输入表,为了更清晰,我以tuple的形式从每个表中获取输出,即df,data1以tuple的形式,例如:df:('abc@yahoo.com",abcd",("abcd"),bcd@gmail.com','bcda'))数据1:(('saha',),)嗨,还有一件事要补充,我不仅有两个feild,即email,lname,我需要从idnum表中提取大约11个字段的许多feild,但对于示例,我创建了这个示例。,数据y可能是无法应用的字典概念。不知何故,我觉得错误在于只获取了df的第一个记录:对于zip中的x,y(df,data1):游标。执行(““插入sql表1值(%s,%s,%s)”,(df[0][0],df[0][1],data1[0][0]))
cursor.execute("insert into sql_table1 values %s", (your_tuple,))