Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.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
PostgreSQL Python将表从一个数据库复制到另一个数据库_Python_Sql_Postgresql_Psycopg2 - Fatal编程技术网

PostgreSQL Python将表从一个数据库复制到另一个数据库

PostgreSQL Python将表从一个数据库复制到另一个数据库,python,sql,postgresql,psycopg2,Python,Sql,Postgresql,Psycopg2,我在Python中使用psycopg2来管理2个数据库。我想将数据从db1中的每个表复制到db2中。我不想使用pg_dump,因为我希望能够在对第一个数据库进行更改时更新第二个数据库中的表,并且如果表中的数据已经存在,pg_dump将不会运行。到目前为止,每个数据库有2个游标。我正在使用 结果=游标1。执行“从表1中选择* 我正试着做类似的事情 游标2.执行“插入到表2中结果” 我还使用pg_dump-s在第二个数据库中复制了第一个数据库的相同模式 我怎样才能做到这一点呢?如果您对结果进行迭代,

我在Python中使用psycopg2来管理2个数据库。我想将数据从db1中的每个表复制到db2中。我不想使用pg_dump,因为我希望能够在对第一个数据库进行更改时更新第二个数据库中的表,并且如果表中的数据已经存在,pg_dump将不会运行。到目前为止,每个数据库有2个游标。我正在使用

结果=游标1。执行“从表1中选择*

我正试着做类似的事情

游标2.执行“插入到表2中结果”

我还使用pg_dump-s在第二个数据库中复制了第一个数据库的相同模式


我怎样才能做到这一点呢?

如果您对结果进行迭代,并对每一行使用insert语句,则可以做到这一点,但可能不是正确的方法,正如@Jules所说:

for row in result.fetchall():
    cursor2.execute('INSERT INTO table2 VALUES %s',(row,))

在Python中,通常不推荐使用挑剔的-'字符串'%变量样式格式。dbapiv2兼容的模块支持基于元组的语法:cur.execute'INSERT INTO table 2%s',row,元组中的尾随逗号是故意的。@Jules感谢您提供的信息。@Jules显然有一些外键链接到其他表,这阻止了我直接插入到这个表中。有没有一种方法可以插入到所有链接表中?我在表BeverageMenuMap上得到错误insert或update违反外键约束FK_BeverageMenuMap__BeverageId@ArushShah您必须共享该表上的外键约束。这可能更适合于其他问题或聊天,尽管我建议您在Postgres中查找使用FK约束的原则。