gpt4 book ai didi

Python MySQLdb : Is it possible to insert a cursor object without parsing it?

转载 作者:行者123 更新时间:2023-11-29 17:00:14 24 4
gpt4 key购买 nike

我需要每天从源数据库加载到新数据库。

新的数据库表列的结构与源表 select 语句相同。新的数据库表位于单独的数据库中,因此每个数据库连接的游标对象都是唯一的,我不能只执行 select into 查询。

因此,例如,如果我对某个源数据库中的某个表进行选择:

# Assuming we already connected to the db and have a cursor object... 
sql_query = "SELECT val_bin, val_id, val_sel from table"
cursor.execute(sql_query)

现在,我在选择的 cursor 对象中拥有了所需的对象。

然后插入,通常我会抓取每个值并为每个值执行一个插入语句。例如:

for row in cursor.fetchall():
insert_query = "insert into new_table (val_bin, val_id, val_sel) VAULES (%s, %d, %s) % row[0], row[1], row[2]"
destination_cursor.execute(insert_query)
destination_db.commit()

然而,这似乎很乏味且缓慢地循环所有内容。有没有办法可以将 select 语句返回的整个游标对象插入到新的数据库表中? 目标表架构与 select 返回的内容完全匹配。

如果不可能,那也没关系,我只是想让这件事变得更容易、更高效。

最佳答案

如果目标是将给定游标的所有结果插入表中,您可能需要使用 .executemany 而不是 .execute。如下图所示:

cursor = connection.cursor()
destination_cursor = connection.cursor()
sql_query = "SELECT val_bin, val_id, val_sel from table"
cursor.execute(sql_query)
insert_query = "insert into new_table (val_bin, val_id, val_sel) VALUES (%s, %s, %s)"
destination_cursor.executemany(insert_query, cursor)
destination_db.commit()

我希望这有用。

关于Python MySQLdb : Is it possible to insert a cursor object without parsing it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52319964/

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