psycopg creata数据库失败,语法错误

时间:2017-10-11 02:38:22

标签: python database postgresql psycopg2

我用psycopg2来创建数据库失败,语法错误,但在前几行使用相同的语法是工作,为什么要问?两行代码,为什么是第二行语法错误?

[代码]

db_name = 'series_id'
self._cur_root.execute("CREATE DATABASE '%s' owner %s ;" % (db_name, self.username))

[错误]

syntax error at or near "'series_id'"
LINE 1: CREATE DATABASE 'series_id' owner postgres ;

2 个答案:

答案 0 :(得分:1)

更正代码,从%s删除cotes:

self._cur_root.execute("CREATE DATABASE %s owner %s ;" % (db_name, self.username))

答案 1 :(得分:1)

PostgreSQL对字符串使用单引号,对文字和名称使用double,可能会被错误分析或包含大写字母。如果您需要引用名称,请尝试:

 ' CREATE DATABASE "%s" OWNER "%s"; '  % ....

您可以在此手动呈现您的请求。通常,最好使用DB驱动程序的函数来替换值 - 它们可以正确引用并防止SQL注入。