【问题标题】:psycopg creata database failed,syntax errorpsycopg 创建数据库失败,语法错误
【发布时间】:2018-03-22 13:53:48
【问题描述】:

我用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 ;

【问题讨论】:

  • 您确定需要在数据库名称周围加上引号吗?

标签: python database postgresql psycopg2


【解决方案1】:

正确的代码,从 %s 中删除 cotes:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-08-26
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      相关资源
      最近更新 更多