【发布时间】:2018-03-07 21:14:41
【问题描述】:
所以我正在尝试编写自己的 sqlite3 到 postgresql 迁移脚本,它将所有表从一个数据库转移到另一个。
我目前看到以下语法错误:
ERROR: syntax error at or near "'name'"
LINE 1: UPDATE django_site SET ('name', 'domain')=('127.0.0.1:8080',...
^
它不太喜欢('name', 'domain') ...我可能在想我缺少一些微妙的东西...
('name', 'domain') 由以下代码行生成:
col = tuple([desc[0] for desc in self.cur_sql3.description])
即,将所有列名作为生成的list,然后转换为tuple 类型。
SQL 查询目前正在这样构建:
cur_psql.execute("UPDATE {0} SET {1}={2} WHERE id={3}".format(table[0], col[1:], row[1:], col[0]))
table[0] 是 表名,col[1:] 是除了主 id 键之外的所有内容,row[1:] 是所有行值减去主键,col[0] 是 主键值,例如1,2,3,4 或5 等
有什么明显的技巧可以避免这个问题吗?
【问题讨论】:
-
如果从列名中删除
'是否有效?我认为它们不允许用于列。 -
当我这样做时,我得到“当前事务被中止,命令被忽略直到事务块结束”
-
可能是因为您当前的事务被中止,并且您的命令被忽略直到事务结束。结束事务 (
ROLLBACK) 并重试。
标签: python postgresql python-3.6 psycopg2