sqlite3, json1扩展及pysqlite3

在python3中使用sqlite3进行JSON数据的操作,但是发现python中自带的sqlite3,没有扩展。

1. 查看sqlite3的编译选项

a = conn.execute("pragma compile_options;")
for i in a:
    print(i)

 输出结果如下:

('COMPILER=msvc-1924',)
('ENABLE_FTS4',)
('ENABLE_FTS5',)
('THREADSAFE=1',)

可以看到,其中并不包含JSON1的支持。

 

2. 编译sqlite3,增加json1扩展

sqlite3可以提供对于JSON数据的支持,为此需要在sqlite3编译时增加json1扩展。

下载sqlite3的amalgamation代码。解压后,在解压目录下,增加JSON扩展:

$cl sqlite3.c -O2 -DSQLITE_ENABLE_JSON1 -link -dll -out:sqlite3.dll

生成lib库:

$ lib sqlite3.obj

3. 编译pysqlite3

下载pysqlite3代码。

$git clone https://github.com/coleifer/pysqlite3

在pysqlite3中的setup.cfg中配置使用新编译生成的sqlite3.lib进行编译。

[build_ext]
# include_dirs=/usr/include
# library_dirs=/usr/lib
include_dirs=../sqlite-amalgamation-3320300
library_dirs=../sqlite-amalgamation-3320300

转换使用要安装的python环境,使用相应的python进行编译和安装。

$python setup.py build
$python setup.py install

验证,仍然使用上面的代码进行验证,其结果如下:

('COMPILER=msvc-1926',)
('ENABLE_FTS3',)
('ENABLE_FTS3_PARENTHESIS',)
('ENABLE_FTS4',)
('ENABLE_FTS5',)
('ENABLE_JSON1',)
('ENABLE_LOAD_EXTENSION',)
('ENABLE_RTREE',)
('ENABLE_STAT4',)
('ENABLE_UPDATE_DELETE_LIMIT',)
('THREADSAFE=1',)

增加的选项有点多。:)...

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值