我正在尝试从主数据库(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中不存在这样的函数,也会感激任何其他建议/方法。提前谢谢!
答案 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