本文主要教你安装Python库,然后在页面操作SQLite数据库。
# 前言
周末制作了一个视频:一个Python库可视化查看SQLite3数据库,但只是在我自己笔记本安装,想着还是写一个服务器教程,介绍文字版的安装过程,分享给需要的伙伴们。
# Datasette
Datasette是一个Python 工具,可以为SQLite数据库生成JSON API。因为SQLite不能并发写入,所以API是只读的,但是读性能非常好。
# 说明
本文将以CentOS6为例,进行说明如何安装这个Python库。
# 演示安装的操作系统版本
$ cat /etc/redhat-release
CentOS release 6.5 (Final)
2
# 安装SQLite3和编译一个Python3.8版本
此工具原则上Python3.6版本以及高于Python 3.6版本即可,但是实际用我一个编译过的Python3.7.4版本,发现在使用sqlite3打开只读文件模式的时候会生成一个空文件。
于是,我重新编译了一个SQLite3最新版本,和最新的Python-3.8.5版本。
在这里会遇到几个坑:
1.Python3 需要引用SSL,这里跟安装这个工具无关,但是如果你后续要用SSL,你最好一次性解决完这个问题,否则到时候需要重新编译一次。有兴趣可以参考之前我的文章:Python入门-编译安装Python3教程。
2.此次编译由于在新环境,编译Python3 的时候找不到SQLite3 库,于是我进行了编译,这里说明下如何修改。
$ wget https://www.sqlite.org/2020/sqlite-autoconf-3330000.tar.gz --no-check-certificate
$ tar zxf sqlite-autoconf-3330000.tar.gz
$ ./configure --prefix=/opt/testerzhang/3rd/sqlite
$ make && make install
$ vim ~/.bash_profile
SQLITEHOME=$HOME/3rd/sqlite
export PYTHONHOME=$HOME/3rd/Python-3.8.5
export PYTHONPATH=$PYTHONHOME/lib/python3.8
export PATH=.:$PYTHONHOME/bin:$SQLITEHOME/bin:$PATH
export LD_LIBRARY_PATH=.:$SQLITEHOME/lib:$PYTHONHOME/lib:$LD_LIBRARY_PATH
$ source ~/.bash_profile
2
3
4
5
6
7
8
9
10
11
12
13
接下来编译Python,这里我也用了自己的OpenSSL版本。
在Python源码目录编辑文件,加入sqlite的路径:'/opt/testerzhang/3rd/sqlite/include',
$ vi setup.py sqlite_inc_paths = [ '/usr/include',
'/opt/testerzhang/3rd/sqlite/include',
'/usr/include/sqlite',
'/usr/include/sqlite3',
'/usr/local/include',
'/usr/local/include/sqlite',
'/usr/local/include/sqlite3',
]$ ./configure --prefix=/opt/testerzhang/3rd/Python-3.8.5 --with-openssl=/opt/testerzhang/3rd/openssl
$ make && make install
2
3
4
5
6
7
8
9
10
11
这样我们就可以正常的用我们自己的Python编译包进行安装库。
3.此次编译由于在新环境,编译Python3 的时候找不到SQLite3 库,于是我进行了编译,这里说明下如何修改。
# 安装Datasette库
$ pip3 install datasette
是不是很简单。
# 如何运行
$ datasette serve fund.db -h 0.0.0.0
其中:
- fund.db 是我的一个sqlite3数据库。
- -h 后面带IP,否则默认启动是127.0.0.1,我们笔记本不能正常在网页访问。
# 效果图
这里的效果图我就简单贴两张,更多的内容可以查看视频。
# 更多的用法
例如直接命令行导出json串,其他更多细节可以参考:https://github.com/simonw/datasette。
# 结束语
如果在服务器安装过程中有任何的问题,可以在评论区留言。
欢迎关注我的公众号testerzhang,原创技术文章第一时间推送。