我正在尝试在Linux中的python 3.6中访问sqlite3中的json1扩展名。
我从这里看到: https://docs.python.org/2/library/sqlite3.html#sqlite3.Connection.enable_load_extension
我可以跑步:
# Load the fulltext search extension
con.execute("select load_extension('./fts3.so')")
# alternatively you can load the extension using an API call:
# con.load_extension("./fts3.so")
因此,我认为类似的方法应该可以实现:
con.execute("select load_extension('./json1.so')")
如果我可以找到那个地方。但是我在sqlite3源代码中找不到json1.so。
我在几个地方寻找答案:
Python - SQLite JSON1 load extension
gcc -g -fPIC -dynamiclib sqlite-src-3140100/ext/misc/json1.c -o json1
看起来不错,但是sqlite的来源不再包含/ ext /或/ ext / misc /目录,因此我自己不能编译此文件。
我通过以下方式下载:
curl -O https://www.sqlite.org/2018/sqlite-autoconf-3240000.tar.gz
tar -xvzf sqlite-autoconf-3240000.tar.gz
http://charlesleifer.com/blog/using-the-sqlite-json1-and-fts5-extensions-with-python/
我尝试了这种方法,并开始看起来不错,但是在重新编译时将自定义sqlite3调用到python包装器中的步骤使用了不支持python3的库:
pysqlite is not supported on Python 3. When using Python 3, use the sqlite3 module from the standard library.