Python 使用pymysql.cursor()将元组值插入mysql表

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 例如:

步骤1:首先,我连接到一个数据库,并从mysql表中取出两列中的所有行(idnum,clientname) 例如:(1234,雷诺兹),(1235,雷诺兹2)

步骤2:然后每个idnum都有一个单独的表 Eg:sample_divya_1234;样本号为1235, 我们需要从每个表中提取所有电子邮件和电子邮件。
(注意:每个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,))