【发布时间】:2020-01-31 00:54:32
【问题描述】:
我在我的 python 包中使用 pg8000 作为 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)
查询运行没有错误(在程序和在线小提琴here),除了表列名称例如:“key CHAR(9)”、“date DATE”等。所以查询正在执行但不认识语法。但是根据this,查询语法是正确的。有什么建议吗?
注意 1:有一个类似的问题 here 但我没有类似的症状,因为我没有收到语法错误。我的查询成功了。
【问题讨论】:
-
不相关,但是:don't use the
chartype -
处理此类事情的常用方法:打印生成的语句并手动运行它(例如在
psql中)。然后edit您的问题并添加您收到的错误消息。 -
我编辑了问题以扩展“工作正常”。
-
“无法识别语法”意味着它不会运行。如果它运行成功,它确实识别语法。
标签: python-3.x postgresql pg8000