teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

全面改訂。python2.7でないと動作しない旨を追記。

2020/06/14 22:34

投稿

hope_mucci
hope_mucci

スコア4447

answer CHANGED
@@ -1,5 +1,13 @@
1
+ ### 追記
2
+ Rpredict.pyに`#tested on python 2.7`と記載されおり、文字通りpython2系でしかうまく動作できません。
1
- ソースコード見ました。原因は断定きませんが、おおむね以下なことです。
3
+ python3.xは後述sqlite型変換がまくいかずエラーなるようです。
2
4
 
5
+ ※このプログラム自体は2001年に作成されたもののようです。python3.xで動かないのも納得。
6
+
7
+ python2系をインストールし、そちらの環境で実行してみてください。何も修正せずエラーなく実行できることを確認しました(python 2.7.17)
8
+
9
+ ### python 3.x で実行できない原因の推測
10
+
3
11
  - バイナリデータ(=文字列としてエンコードできるデータではない)が入っているblob型の`ann-bin`が変にTEXTとして推定されてしまいfetch時にエラーが発生する
4
12
 
5
13
  `ann-bin`は先頭数十バイト分がascii文字なので、これが原因でライブラリ側にTEXT型と推定されてしまっているのかもしれませんが、全く同じデータを別テーブルに入れてSELECTするとbytes扱いになったりするので条件がよくわかりません。