python 为自动增量添加 SEQUENCE 时 postgresql 插入错误

python postgresql insert error while adding SEQUENCE for auto increment

下面主要是依赖的一切

authorname="samuel"
bugid=1222
filename="mila.txt"
conn = None;
cursor = None;
conn = pg8000.connect(database="postgres", user="postgres", password="root", host="localhost")
cursor = conn.cursor()

def createTables():
    cursor.execute("CREATE SEQUENCE FILE_id_seq")
    cursor.execute("CREATE TABLE FileTable(ID INT UNIQUE NOT NULL DEFAULT NEXTVAL('FILE_id_seq'), filename varchar(250) NOT null UNIQUE )")
    cursor.execute("CREATE SEQUENCE Author_id_seq")

    conn.commit()
    return

def insert_filename(filename1):
    cursor.execute('INSERT INTO FileTable (filename) VALUES (%s)', (filename1))
    conn.commit()
    return

insert_filename(filename)

插入时出现错误

ps = cache['ps'][key]

KeyError: ((705, 705, 705, 705, 705), 'INSERT INTO FileTable (filename) VALUES (%s)')

g8000.ProgrammingError: (b'ERROR', b'42P18', b'could not determine data type of parameter 

注意:对于串行数据类型,我有同样的错误。我更新了代码

仍然不确定 (705, 705, 705, 705, 705) 元组的来源...cache 相关代码不在代码主体中...

但是,有几件事...

  1. createTables 从未被调用。
  2. (filename1) 不是 execute 的有效参数。那不是 元组 。对于单项 tuples,你需要添加一个尾随逗号,即 (filename1,).

当我添加对 createTables 的调用并将参数更改为具有尾随逗号时,使用您的 insert_filename 代码自动递增对我来说效果很好。