我在我的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"包。