Python - 我可以使用另一个数据库中的游标(来自select)将行插入一个数据库吗?

时间:2018-03-20 22:51:59

标签: python sql postgresql sqlite pyodbc

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

从主Postgres db获取数据:

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中不存在这样的函数,也会感激任何其他建议/方法。提前谢谢!

2 个答案:

答案 0 :(得分:1)

你可以从pyodbc或sqlite看一下executemany。如果您可以从select中构建参数列表,则可以将列表传递给executemany。

根据您计划插入的记录数量,性能可能是此未解决问题中引用的问题。 https://github.com/mkleehammer/pyodbc/issues/120

答案 1 :(得分:1)

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

1.0

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

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

0.25