psycopg2 在 /tmp 上被拒绝权限
在通过 psycopg2 运行 copy
命令时,我遇到了一个错误:
psycopg2.ProgrammingError: 无法打开文件 "/tmp/<>.txt" 进行写入:权限被拒绝
我不知道这个问题的具体原因,但之前我运行 copy
命令时没有遇到过这个问题。与这个问题的回答不同,把输出位置改到主文件夹也没有改变结果。我尝试用 chmod -R 777 /tmp
来重置 /tmp
的权限,但没有成功。用 sudo 权限运行脚本也没有用。我接下来应该尝试什么来解决这个问题呢?
以下是这个过程的代码示例:
import psycopg2 as post
con = post.connect(<dbname>, <host>, <user>, <password>)
cur = con.cursor()
with open('/tmp/out_path.txt', 'w') as f:
cur.copy_expert("COPY <table> TO '/tmp/out_path.txt' WITH CSV HEADER" +
"DELIMITER AS E'\t'", f)
# close connections, etc
我在使用 Ubuntu 12.04 服务器,PostgreSQL 9.3,Python 2.7。客户端和主机在同一台机器上——我是在通过 ssh 登录时运行这个脚本的。
1 个回答
2
with open('/tmp/out_path.txt', 'w') as f:
cur.copy_expert("""
COPY <table> TO STDOUT WITH CSV HEADER DELIMITER AS E'\t'
""", f)
来自文档:
SQL语句应该写成 COPY table TO STDOUT 这样的格式,这样才能把表的数据导出到作为参数传入的文件对象中。