SqliteからFirebirdへ移行した時の話です。
その1.予約語が違う
テーブルをFireBird上に作ると次のカラム名でエラーとなりました
「date」 「any」 「name」
SqliteならばOkなのでどうも予約語が違う様です。
その2.Sqliteは文字列長のチェックをしていない。
varchar(32)
と宣言したカラムにデータを書こうとしたらSqliteはOk、Firebirdはエラーとなりました。
調べたら確かに書いた文字列長が長すぎました。とうもSqliteは長さをチェックしていない様です。
その3.接続オブジェクトが違う
変数conはコネクションオブジェです
Sqliteなら下記でもOk、FirebirdはNgでした
cur = con.execute("select * from user_table")
rec = cur.fetchall()
下記の様にしないと駄目でした
cur=con.cursor()
cur.execute("select * from user_table");
rec = cur.fetchall()
----------
最近FirebirdとPythonの投稿が続いていますが。
実は今趣味で作っているセキュリティソフトのデータベースをSqliteからFirebirdに変更しようとしているからです。
Sqliteを選んだのはPython標準だし、そもそも端末で異常を検知した時の情報を蓄える為のものなので、大量に登録は無いはずなのですが。
でもヒートランテストを行うと5000件ぐらい登録されるので、やはりSqliteだと遅いです。