我正在尝试使用mysql.connector在MySql数据库中移动一些数据,并且似乎无法使多个游标正常工作。
我相信我需要3个才能工作,但是我什至不能让2个工作,所以我被困住了,一直试图找出我做错了什么,但无济于事。在过去的几个小时中,我已经读过this,this,this,this和其他几个内容,我很茫然。我确定是我。
这是我要执行的操作的简化示例-按数据显示示例比输入要容易得多。
所需的最终结果:
<MySql_table_after>
entry data
1 one
2 two
3 three
当前表:
<MySql_table_before>
entry data
1 o
1 n
1 e
2 t
2 w
2 o
3 t
3 h
3 r
3 e
3 e
代码的逻辑是这样的:
第1步(第一个光标):Select Distinct(entry) FROM MySql_table_before
第2步(第2个光标):遍历第1步得出的不同结果
my_data = []
for entry in entries:
step_2_sql = 'SELECT data FROM My_Sql_table_before WHERE entry = %s'
step_2_variable = entry[0]
2nd_cursor.execute(step_2_sql, step_2_variable)
遍历这些结果并附加到my_data
,以''.join(my_data)
结尾。
然后,第3步将是INSERT
表中的条目和my_data。我什至没有尝试过,因为我无法使前两个光标起作用。
我在过去几个小时中尝试过的内容,包括尝试MySql_table_after
并退出,buffered = True
,mutli=True
等许多变化,等等:
mycursorX.close()
我不太在意将结果放在mydb = mysql.connector.connect(PARAMS)
mycursor1 = mydb.cursor(buffered=True)
mycursor2 = mydb.cursor(buffered = True)
sql_query = "SELECT DISTICNT(entry) FROM MySql_table_before"
mycursor1.execute(sql_query,)
my_results = mycursor1.fetchall()
for result in my_results:
sql_query_iterate = "SELECT data FROM
MySql_table_before WHERE entry = %s"
sql_query_iterate_variable = (result,)
mycursor2.execute(sql_query_iterate,
sql_query_iterate_variable,multi=True)
列中的顺序,我使用了data
one
和two
作为简单示例。