[英]Python SQLAlchemy SQLite FTS unicode6.1 tokenizer
這是嘗試在具有使用unicode61標記器的FTS表的SQLite3數據庫上嘗試SQLAlchemy數據庫反射的代碼:
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('sqlite:///database.sqlite')
Base = declarative_base()
metadata = Base.metadata
metadata.reflect(bind=engine, views=True)
這個錯誤:
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unknown tokenizer: unicode61
從v3.8.6開始,默認情況下已包含此令牌生成器,並且不選擇對其進行編譯。
同時,當我跑步時:
$ python
>>> import sqlite3
>>> sqite3.sqlite_version
'3.8.5'
……f
然而:
$ sqlite3
SQLite version 3.9.2 2015-11-02 18:31:45
我如何獲得Python或SQLAlchemy特別是引用更現代甚至自定義的已編譯sqlite3二進制文件?
附加說明 :據我所知,我試圖在OSX(10.10.5 Yosemite)系統上運行,並且SQLAlchemy和Python引用pysqlite,這是sqlite3.dylib的dbapi2包裝器。 我剛剛找到了以下文章,我將嘗試將其結果返回。
http://sqlite.1065341.n5.nabble.com/How-to-build-a-new-sqlite3-dylib-td63635.html
到目前為止的結果 :
重命名/usr/lib/libsqlite3.dylib
以將其替換為自定義版本,這會使OSX變磚,並且您需要執行系統還原。 因此,我將嘗試使用virtualenv方法。
這樣的問題試圖替換在virtualenv
鏈接的sqlite3庫,但是我還沒有弄清楚如何將其應用於SQLAlchemy 如何在virtualenv中的python 2.7.3中升級sqlite3?
從此StackOverflow答案得出的答案:
pysqlite2
源代碼 pysqlite2
源代碼。 sqlite3
合並源代碼。 sqlite3
源代碼復制到提取pysqlite2
根目錄中,例如path-to/pysqlite-2.XX
。 cd path-to/pysqlite-2.XX
python setup.py build_static
這將使用您轉儲到該文件夾中的sqlite3
源代碼,並使用pysqlite2
模塊構建一個靜態庫。
這將需要一分鍾,但是將build
一個新的目錄,並且內部將存在一個文件夾,例如lib.macosx-10.10-intel-2.7
。 在其中,您位於pysqlite2
文件夾之后。
例如。 path-to/pysqlite2.XX/build/lib.macosx-10.10-intel-2.7/pysqlite2
注意:請按照您自己的風險進行操作。 嘗試在可能的地方使用virtulenv
。 將此pysqlite2
文件夾復制到/Library/Python/2.7/site-packages/
並覆蓋現有軟件包。
pysqlite2
特定site-package
(用於SQLite包裝器)以及提供的靜態庫。 最后:
$ python
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.8.5'
>>> from pysqlite2 import dbapi2 as sqlite3
>>> sqlite3.sqlite_version
'3.9.2'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.