python - 使用 Python 备份 Postgresql 数据库

标签 python postgresql

我想使用 Python 代码备份数据库。我想备份一些相关数据的表。如何备份以及如何使用“SELECT”语句选择所需的表?

例如

我想获取一些表从2014-05-01到2014-05-10的数据,并将这个结果输出为.sql扩展文件

如何使用 python 代码获取此格式? 如果你不介意,请解释一下。 谢谢。

最佳答案

使用psycopg2建立数据连接。文档中有很多示例:

http://initd.org/psycopg/

配置数据源后,通过将结果集打印到文件来循环访问“SELECT”语句的结果,构建 INSERT INTO 语句。基本上是一些反向逻辑。

这样,如果时间到了,您需要使用备份文件,您只需运行 SQL 文件,将数据插入...

例子:

import psycopg2
import sys


con = None

try:

    con = psycopg2.connect(database='local', user='local', password='local',port='1970')
    cur = con.cursor()
    cur.execute('SELECT x FROM t')
    f = open('test.sql', 'w')
    for row in cur:
        f.write("insert into t values (" + str(row) + ");")
except psycopg2.DatabaseError, e:
    print 'Error %s' % e
    sys.exit(1)
finally:
    if con:
        con.close()

然后恢复:

psql <dbname> <username> < test.sql

关于python - 使用 Python 备份 Postgresql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23732900/

相关文章:

postgresql - postgresql中的 Doctrine JSON列存储相同数据的对象或数组

postgresql - Spark 写入 Postgresql。批量更新异常?

postgresql - 多个案例陈述

postgresql - 无法在 pyspark shell 中使用 jdbc 连接到 postgres

python - 如何在 powerBI 上运行 Python 脚本

python - 在 Python 中将阿拉伯字符(东方阿拉伯数字)转换为阿拉伯数字

python - Python unittest下的时间戳测试

python - 使用 Tkinter 正确完成线程化(有或没有队列)

python - 触发事件和执行实际事件的更好逻辑?

postgresql - 由于docker上的权限被拒绝而无法创建postgres用户