1

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 コードが必要です。

2 つの質問があります。バージョンが異なるのはなぜですか? また、v1.5 で返されたキー値を取得するにはどうすればよいですか (複数の同時ユーザーがデータを入力します)。

4

2 に答える 2