2017-10-11 63 views
0

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

[代码]

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 ; 
+0

您确定需要引用数据库名称吗? –

回答

1

正确的代码,来自%s除去科茨:

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

PostgreSQL使用字符串单引号和双为文字以及可能被误解或包含大写字母的名称。如果您需要引用名称,请尝试:

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

在这里您手动呈现您的请求。通常最好使用DB驱动程序的函数来替换值 - 它们会进行适当的引用并防止SQL注入。

相关问题