Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将大量数据从一个表插入到另一个表_Python_Mysql - Fatal编程技术网

Python 将大量数据从一个表插入到另一个表

Python 将大量数据从一个表插入到另一个表,python,mysql,Python,Mysql,初学者的问题在这里。我希望直接从我在同一会话中运行的查询中使用多行数据填充一个表。我希望使用excutemay()来完成它。目前,我将每一行作为元组插入,如下面的脚本所示 选择查询以获取所需数据: 此查询返回包含4列的数据:停车ID、快照日期、快照时间、停车统计 park_set_stat_query = "SET @row_number = 0;" park_set_stat_query2 = "SET @row_number2 = 0;" # one tim

初学者的问题在这里。我希望直接从我在同一会话中运行的查询中使用多行数据填充一个表。我希望使用excutemay()来完成它。目前,我将每一行作为元组插入,如下面的脚本所示

选择查询以获取所需数据:
此查询返回包含4列的数据:停车ID、快照日期、快照时间、停车统计

    park_set_stat_query    = "SET @row_number = 0;"
    park_set_stat_query2   = "SET @row_number2 = 0;"

   # one time load to catch only the changes done in the input table
    park_change_stat_query =   """select in1.Parking_ID,                                        
                                         in1.Snapshot_Date as Snapshot_Date, 
                                         in1.Snapshot_Time as Snapshot_Time,                                          
                                         in1.Parking_Stat
                                  from (SELECT 
                                         Parking_ID, 
                                         Snapshot_Date, 
                                         Snapshot_Time, 
                                         Parking_Stat, 
                                         (@row_number:=@row_number + 1) AS num1
                                  from Fact_Parking_Stat_Input
                                  WHERE Parking_Stat<>0) as in1                             

                                  left join (SELECT 
                                         Parking_ID, 
                                         Snapshot_Date, 
                                         Snapshot_Time, 
                                         Parking_Stat, 
                                         (@row_number2:=@row_number2 + 1)+1 AS num2
                                  from Fact_Parking_Stat_Input
                                  WHERE Parking_Stat<>0) as in2

                                  on in1.Parking_ID=in2.Parking_ID and in1.num1=in2.num2
                                  WHERE (CASE WHEN in1.Parking_Stat<>in2.Parking_Stat THEN 1 ELSE 0 END=1) OR num1=1"""  
如何改进代码,使其在插入命令时插入数据

谢谢
Amir

MYSQL有一个INSERT-INTO命令,它可能比python中的查询、拉取和重新序列化要高效得多

    mycursor = connection.cursor()
    mycursor2 = connection.cursor()

    mycursor.execute(park_set_stat_query)
    mycursor.execute(park_set_stat_query2)
    mycursor.execute(park_change_stat_query) 

#     # keep only changes in a staging table named Fact_Parking_Stat_Input_Alter
    qSQLresults = mycursor.fetchall()
    for row in qSQLresults:
        Parking_ID = row[0]
        Snapshot_Date = row[1] 
        Snapshot_Time = row[2] 
        Parking_Stat = row[3]

        #SQL query to INSERT a record into the table Fact_Parking_Stat_Input_Alter.
        mycursor2.execute('''INSERT into Fact_Parking_Stat_Input_Alter (Parking_ID, Snapshot_Date, Snapshot_Time, Parking_Stat)
                      values (%s, %s, %s, %s)''',
                      (Parking_ID, Snapshot_Date, Snapshot_Time, Parking_Stat))

        # Commit your changes in the database
        connection.commit()

    mycursor.close()
    mycursor2.close()
    connection.close()