みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Python 2.7で、SQLite3の全文検索

結論だけでいいです。

Python 2.7で、SQLite3のFTSを使える □YES/□NO

当然使えると思って前準備まで全部行ったのに、実際に登録しようとしたら出来ず調べると、ソースからコンパイルとか何かを介するとか何かをダウンローダするとか...

これでは私的にはNOです。

投稿日時 - 2014-12-27 21:31:55

QNo.8872195

暇なときに回答ください

質問者が選んだベストアンサー

No.1です。

> Knoppix上での解決方法も教えて下さい

puppy linux上の環境では、python 2.7.3でも前述のサンプルソースのコメントアウトだけで動作しました。つまりpythonではなく、インストールされているsqlite3のバージョンに依存するということになります。


通常ですと、sqlite3の最新版のソースをもってきてコンパイルし、インストールして、作成されたsqlite3.soを元のファイルと置き換えれば良いことになります。

./configure --prefix=sqlite3のインストールされているディレクトリ
make
make install

ただしKnoppixってCD-ROM(DVD-ROM)から起動しますよね?
いまご利用になっているsqlite3がCD-ROM(DVD-ROM)上に存在すると置き換えは難しいと思います。

投稿日時 - 2014-12-29 18:51:35

お礼

返答ありがとうございます


ご指導の通り、コメントアウトだけで動作してしまいました。
お手数をかけてしまって申し訳ありません。

どうして、修正しなければ動作しないコードが出回っているのか不思議ですね。


今後もおねがいします

投稿日時 - 2014-12-29 20:02:45

ANo.2

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

こんにちは
Windows環境前提としてお話します。

https://docs.python.org/2.7/library/sqlite3.html#sqlite3.Connection.enable_load_extension

たとえば、上記URLのサンプルソースですが標準のPython2.7ではエラーで動作しませんが、以下の作業を行ったところ動作しました。環境はWindows8.1です。
ただし他の機能に不具合が出る可能性がありますので、作業を行う場合は、自己責任において行ってくださいませ。

1.ソース上の3行をコメントアウトする
 con.enable_load_extension(True)
 con.execute("select load_extension('./fts3.so')")
 con.enable_load_extension(False)

2.sqlite3のサイトからsqlite3.dllを入手する。
 http://www.sqlite.org/download.html
 sqlite-dll-win32-x86-3080704.zip

3.pythonインストール先のDLLsディレクトリ内のsqlite3.dllを2.で入手したものに置き換える。

おそらくpythonに標準添付のsqlite3.dllが古いのだと思います。

投稿日時 - 2014-12-28 16:51:17

お礼

返答ありがとうございます


ご提示の手法で解決出来ました。
このようにデータベースに詳しいないので、また質問するかもしれません。

私はWindowsでも、このSQLiteを使おうとしていますが、同様にKnoppixというLinuxの一種でも使う予定です。そして、同じ問題が発生しています。よろしければKnoppix上での解決方法も教えて下さい。
バージョンは以下です。
$ python --version
Python 2.7.3

投稿日時 - 2014-12-29 04:08:28

あなたにオススメの質問