Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在两个数据库sqlite之间合并差异表_Python_Database_Sqlite - Fatal编程技术网

Python 在两个数据库sqlite之间合并差异表

Python 在两个数据库sqlite之间合并差异表,python,database,sqlite,Python,Database,Sqlite,好的,我有一个我写的程序(一些用户控制自动化),它有一个数据库——它正在我的一台服务器上运行,它的版本是1.0 上一次我给这个工具添加了一些升级(所以它的版本是1.5) 我的问题是- 在版本1中,该工具的数据库看起来像- 表a 表b 表c 在版本1.5中,我向数据库中添加了更多的表- 表a 表b 表c 表d 表e 我需要什么 我希望在不丢失生产数据库中的所有生产数据的情况下,将版本1.5中的所有新表添加到版本1的数据库中 只需将所有新表在新数据库和旧数据库之间移动到旧数据库。(数据库之间的差异,

好的,我有一个我写的程序(一些用户控制自动化),它有一个数据库——它正在我的一台服务器上运行,它的版本是1.0

上一次我给这个工具添加了一些升级(所以它的版本是1.5)

我的问题是- 在版本1中,该工具的数据库看起来像-

表a
表b
表c

在版本1.5中,我向数据库中添加了更多的表-
表a
表b
表c
表d
表e

我需要什么

我希望在不丢失生产数据库中的所有生产数据的情况下,将版本1.5中的所有新表添加到版本1的数据库中

只需将所有新表在新数据库和旧数据库之间移动到旧数据库。(数据库之间的差异,并将所有差异表推送到旧表)

我知道如何在python中实现这一点,比如-

-从新数据库获取表列表
-从旧数据库获取表列表
-获得不同的表格
-手动将表格从新表格推到旧表格

但在我开始编写代码之前,也许有更简单的方法可以做到这一点?因为我很确定这不仅仅是我的问题

有没有一种方法可以将数据库按这种方式加上边框

Sqlite 3数据库

p、 美国。
不知道这个问题的正确标题是什么,所以如果有人能给你一些建议,那就太好了:)

如果你只需要添加缺少的表,而不需要迁移已有表的行和列,你可以通过这种方式来实现

  • 在通过生产数据库运行任何stackoverflow提示之前进行备份。;-)

  • 将新数据库转储到sql文件中

  • 接下来,将所有出现的
    CREATE TABLE
    替换为
    CREATE TABLE(如果不存在)
    ,并过滤掉所有其他SQL命令
  • 对输出满意后,将其导入到旧数据库

  • 只有桌子吗?是否也要迁移它们的行?
    $ sqlite3 your_new_db.db
    sqlite> .output dump.sql
    sqlite> .dump
    
    grep 'CREATE TABLE' dump.sql | sed -e 's|CREATE\ TABLE|CREATE\ TABLE\ IF\ NOT\ EXISTS|g' > add_missing_tables.sql
    
    cat add_missing_tables.sql | sqlite3 your_old_db.db