我正在尝试使用 kinterbasdb 和 Python 2.7 将数据写入服务器上的 Firebird 数据库,并打印添加数据的键值。当我写入数据库的本地副本时,它工作得很好。
insert = """INSERT INTO myTable (myID,DT_TIMESTAMP)
VALUES (?,?)
RETURNING myTable_KEY"""
data = ("idTest", datetime.now())
conAdd = kinterbasdb.connect(dsn=nm, user=dbUser, password=dbPass)
cur = conAdd.cursor()
cur.execute(insert, data)
return_key = cur.fetchone()[0]
conAdd.commit()
cur.close()
但是这个词returning
在网络上访问数据库时会出现问题:
ProgrammingError: (-104, 'isc_dsql_prepare: \n Dynamic SQL Error\n SQL error code = -104\n Token unknown - line 3, column 13\n RETURNING'
看Firebird的版本,本地版本是2.0,服务器版本是1.5。我不明白这一点,因为我刚刚将服务器版本复制到我的本地驱动器进行测试。我正在使用 kinterbasdb,我认为它是数据库的接口,无论它是本地的还是服务器上的。事实证明,v2.0 有“返回”这个词,但 v1.5 没有。而且我需要我的 Python 代码在服务器版本上工作。
我有两个问题:为什么版本不同?以及如何获取 v1.5 中返回的键值(多个同时用户将输入数据)?