gpt4 book ai didi

Python - 批量选择然后从一个数据库插入到另一个数据库

转载 作者:太空狗 更新时间:2023-10-30 02:34:28 27 4
gpt4 key购买 nike

我正在寻找一些关于如何使用 sqlite3 在 Python 中执行此操作的帮助

基本上我有一个下载数据库(临时)的过程,然后需要将它的记录插入第二个相同的数据库(主数据库)..同时忽略/绕过任何可能的重复键错误

我在考虑两种情况,但不确定如何在 Python 中最好地做到这一点

选项 1:

  • 创建 2 个连接和游标对象,每个数据库 1 个
  • 从 DB 1 中选择,例如:

    dbcur.executemany('SELECT * from table1')
    rows = dbcur.fetchall()
  • 将它们插入到 DB 2 中:

    dbcur.execute('INSERT INTO table1 VALUES (:column1, :column2)', rows)
    dbcon.commit()

这当然行不通,因为我不确定如何正确地做:)

选项 2(我更喜欢,但不确定该怎么做):

  • 在 1 个语句中选择和插入

另外,我在数据库中有 4 个表,每个表都有不同的列,我可以跳过在 INSERT 语句中命名列吗?

就重复键而言,我读过我可以使用“ON DUPLICATE KEY”来处理例如。

INSERT INTO table1 VALUES (:column1, :column2) ON DUPLICATE KEY UPDATE set column1=column1

最佳答案

您可以 ATTACH两个数据库到同一个连接,代码如下:

import sqlite3
connection = sqlite3.connect('/path/to/temp.sqlite')
cursor=connection.cursor()
cursor.execute('ATTACH "/path/to/main.sqlite" AS master')

sqlite 中没有像 MySQL 中那样的 ON DUPLICATE KEY 语法。 This SO question包含备选方案。

所以要在一个 sql 语句中进行批量插入,您可以使用类似的东西

cursor.execute('INSERT OR REPLACE INTO master.table1 SELECT * FROM table1')

参见 this page for information about REPLACE和其他 ON CONFLICT 选项。

关于Python - 批量选择然后从一个数据库插入到另一个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8215686/

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