PG8000 创建表会将列名与类型混淆



我在我的python包中使用pg8000 for Postgres api。 我创建了一个函数,该函数是创建一个表,不存在这样的表。 函数如下:

def create_tables(self, cur, tables):
for i, table in enumerate(tables):
name = 'important_' + table
query = '''CREATE TABLE IF NOT EXISTS {} (
{}  CHAR(9),
{}  DATE,
{}  DECIMAL,
{}  TIME,
{}  TIME,
{}  NUMERIC,
{}  CHAR,
{}  CHAR,
{}  DECIMAL 
)
'''.format(name, "key", "date", "cycle_sequence", "sent_time","processed_time", "amount", "sender", "receiver", "jumbo")
cur.execute(query)

查询运行没有错误(在程序和这里的在线小提琴中(,除了表列名称例如:"键 CHAR(9("、"日期 DATE"等。 因此,查询正在执行,但无法识别语法。 但根据这一点,查询语法是正确的。有什么提示吗?

注1:这里有一个类似的问题,但我没有类似的症状,因为我没有收到语法错误。 我的查询成功。

这对我来说似乎很奇怪,但"修复"是删除查询列规范部分中"("之前的空格,如下所示。 使用空格,(名称,类型(元组被解释为单个字符串,没有空格,它们被正确解释为列名和类型。

query = '''CREATE TABLE IF NOT EXISTS {} (...
query = '''CREATE TABLE IF NOT EXISTS {}(...

作为记录,我正在使用:PyCharm 2019.2.3(社区版(与Anaconda 1.9.7。 db api 是"pg8000"包。

相关内容

  • 没有找到相关文章

最新更新