这是使用unicode61 tokenizer在FTS表上尝试使用SQLiteche数据库进行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 The unicode61 tokenizer is now included in FTS4 by default.
同时我跑:
$ python
>>> import sqlite3
>>> sqite3.sqlite_version
'3.8.5'
...... frick。
然而:
$ sqlite3
SQLite version 3.9.2 2015-11-02 18:31:45
如何让Python或SQLAlchemy特别引用更现代甚至是自定义编译的sqlite3二进制文件?
附加说明:我正在尝试在OSX(10.10.5优胜美地)系统上运行,因此我可以告诉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方法。
这个SO问题试图替换a中链接的sqlite3库
virtualenv
但我还没弄清楚如何应用它
SQLAlchemy的
How to upgrade sqlite3 in python 2.7.3 inside a virtualenv?
答案 0 :(得分:0)
来自此StackOverflow的答案答案:
pysqlite2
源代码
pysqlite2
源代码。sqlite3
合并源代码。sqlite3
源代码复制到您提取pysqlite2
的位置的根目录,例如path-to/pysqlite-2.X.X
。cd path-to/pysqlite-2.X.X
python setup.py build_static
这将获取您在文件夹中转储的sqlite3
源代码,并使用pysqlite2
模块构建静态库。
这需要一分钟,但会有一个新目录build
,里面会有一个像lib.macosx-10.10-intel-2.7
这样的文件夹。在你的内部pysqlite2
文件夹。
例如。 path-to/pysqlite2.X.X/build/lib.macosx-10.10-intel-2.7/pysqlite2
注意:由您自行承担风险。尝试使用virtulenv
可能的。将此pysqlite2
文件夹复制到/Library/Python/2.7/site-packages/
并覆盖现有的包。
site-package
特定pysqlite2
以及提供的静态库。最后:
$ python
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.8.5'
>>> from pysqlite2 import dbapi2 as sqlite3
>>> sqlite3.sqlite_version
'3.9.2'