簡體   English   中英

Python SQLAlchemy SQLite FTS unicode6.1標記程序

[英]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開始,默認情況下已包含此令牌生成器,並且不選擇對其進行編譯。

v3.8.6缺省情況下,現在FTS4中包括unicode61標記器。

同時,當我跑步時:

$ 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答案得出的答案:

https://stackoverflow.com/a/1546162/622276

  1. https://pypi.python.org/pypi/pysqlite下載pysqlite2源代碼
  2. 下載最新的SQLite合並源代碼(在撰寫本文時為v3.9.2) http://www.sqlite.org/download.html (sqlite-amalgamation-3XXXXXX.zip)
  3. 提取pysqlite2源代碼。
  4. 提取sqlite3合並源代碼。
  5. sqlite3源代碼復制到提取pysqlite2根目錄中,例如path-to/pysqlite-2.XX
  6. cd path-to/pysqlite-2.XX
  7. python setup.py build_static

    這將使用您轉儲到該文件夾​​中的sqlite3源代碼,並使用pysqlite2模塊構建一個靜態庫。

  8. 這將需要一分鍾,但是將build一個新的目錄,並且內部將存在一個文件夾,例如lib.macosx-10.10-intel-2.7 在其中,您位於pysqlite2文件夾之后。

    例如。 path-to/pysqlite2.XX/build/lib.macosx-10.10-intel-2.7/pysqlite2

  9. 注意:請按照您自己的風險進行操作。 嘗試在可能的地方使用virtulenv 將此pysqlite2文件夾復制到/Library/Python/2.7/site-packages/並覆蓋現有軟件包。

  10. SQLAlchemy指向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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM