gpt4 book ai didi

Python - 我可以使用另一个数据库中的游标(从选择)将行插入到一个数据库中吗?

转载 作者:行者123 更新时间:2023-11-29 12:53:09 24 4
gpt4 key购买 nike

我正在尝试从我们的主数据库(postgres)中选择数据并将其插入到临时 sqlite 数据库中以进行一些比较、分析和报告。有没有一种简单的方法可以在Python中做到这一点?我正在尝试做这样的事情:

从主 Postgres 数据库获取数据:

import psycopg2
postgres_conn = psycopg2.connect(connection_string)
from_cursor = postgres_conn.cursor()
from_cursor.execute("SELECT email, firstname, lastname FROM schemaname.tablename")

插入 SQLite 表:

import sqlite3
sqlite_conn = sqlite3.connect(db_file)
to_cursor = sqlite_conn.cursor()
insert_query = "INSERT INTO sqlite_tablename (email, firstname, lastname) values %s"
to_cursor.some_insert_function(insert_query, from_cursor)

所以问题是:是否有一个some_insert_function适用于这种情况(使用pyodbc或使用sqlite3)?

如果有,如何使用?上面的 insert_query 可以工作吗?还是应该修改?

如果 Python 中不存在这样的函数,任何其他建议/方法也将不胜感激。提前致谢!

最佳答案

您应该将选择查询的结果传递给execute_many

insert_query = "INSERT INTO smallUsers values (?,?,?)"
to_cursor.executemany(insert_query, from_cursor.fetchall())

您还应该使用参数化查询(?标记),如下所述:https://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.execute

如果您想避免将整个源数据库加载到内存中,可以使用以下代码一次处理 100 行:

while True:
current_data = from_cursor.fetchmany(100)
if not current_data:
break
to_cursor.exectutemany(insert_query, current_data)
sqlite_conn.commit()
sqlite_conn.commit()

关于Python - 我可以使用另一个数据库中的游标(从选择)将行插入到一个数据库中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49395423/

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