O-02 CentOS7服务器部署Django环境- sqlite3安装

O-02 CentOS7服务器部署Django环境- sqlite3安装


由于python自带sqlite3版本薇3.7.17低了,后面运行Django2.x会报错,故需要升级CentOS7的Sqlite3版本
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rKNu130G-1570980324072)(evernotecid://80031049-E486-4FD3-9EC6-7B083434A989/appyinxiangcom/1518045/ENResource/p1234)]

一、sqlit3安装

第一步、检查当前系统sqlite3版本

执行命令检查sqlite3版本

# sqlite3 --version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668

发现确实低了,接下来我们来升级Centos的sqlit版本,使用源码按照的方式

第二步、下载最新sqlite3源码

sqlite3源码官网下载地址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sj235IUD-1570980324073)(evernotecid://80031049-E486-4FD3-9EC6-7B083434A989/appyinxiangcom/1518045/ENResource/p1235)]
复制得到地址为: https://www.sqlite.org/2019/sqlite-autoconf-3300100.tar.gz
后台执行命令,通过wget下载到 /usr/src目录下

# wget https://www.sqlite.org/2019/sqlite-autoconf-3300100.tar.gz -P /usr/src

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iR172YEz-1570980324074)(evernotecid://80031049-E486-4FD3-9EC6-7B083434A989/appyinxiangcom/1518045/ENResource/p1236)]

第三步、解压现在源码

执行命令 cd 到 /use/src 目录

# cd /usr/src/
# ls

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EmdzNlvG-1570980324075)(evernotecid://80031049-E486-4FD3-9EC6-7B083434A989/appyinxiangcom/1518045/ENResource/p1237)]
执行命令 解压tar包到当前目录

# tar -zxvf sqlite-autoconf-3300100.tar.gz 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mQ4DzVyv-1570980324077)(evernotecid://80031049-E486-4FD3-9EC6-7B083434A989/appyinxiangcom/1518045/ENResource/p1238)]
解压完成,可以看到当前目录存在一个解压后的目录

第四步、运行configure检查依赖,指定安装目录

cd 到 解压后的目录, 运行configure检查依赖,指定安装目录

cd sqlite-autoconf-3300100/
# ./configure --prefix=/usr/local/sqlite

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LHfmhkxE-1570980324078)(evernotecid://80031049-E486-4FD3-9EC6-7B083434A989/appyinxiangcom/1518045/ENResource/p1239)]
没有error表示成功

第五步、执行编译

执行命令,编译安装

[root@VM_0_15_centos sqlite-autoconf-3300100]# make && make install

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5d8hXuMx-1570980324081)(evernotecid://80031049-E486-4FD3-9EC6-7B083434A989/appyinxiangcom/1518045/ENResource/p1240)]
没有error表示成功

第六步、检查版本

执行命令 检查版本

[root@VM_0_15_centos sqlite-autoconf-3300100]# /usr/local/sqlite/bin/sqlite3 --version
3.30.1 2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3df1b0b

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lLdNADl8-1570980324084)(evernotecid://80031049-E486-4FD3-9EC6-7B083434A989/appyinxiangcom/1518045/ENResource/p1241)]
可以看到版本变了

[root@VM_0_15_centos sqlite-autoconf-3300100]# /usr/bin/sqlite3 --version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gFxqSH3l-1570980324088)(evernotecid://80031049-E486-4FD3-9EC6-7B083434A989/appyinxiangcom/1518045/ENResource/p1242)]
可以看到Centos7自带的sqlite3版本,还是旧版本

第七步、修改sqlite3软连接

那么需要更新一下,老的sqlit3重命名,然后将新的sqlit3 软连接到/usr/bin/sqlite3

[root@VM_0_15_centos sqlite-autoconf-3300100]# mv /usr/bin/sqlite3  /usr/bin/sqlite3_old
[root@VM_0_15_centos sqlite-autoconf-3300100]# ln -s /usr/local/sqlite/bin/sqlite3   /usr/bin/sqlite3
[root@VM_0_15_centos sqlite-autoconf-3300100]# /usr/bin/sqlite3 --version
3.30.1 2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3df1b0b

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SXpDtZMV-1570980324100)(evernotecid://80031049-E486-4FD3-9EC6-7B083434A989/appyinxiangcom/1518045/ENResource/p1243)]
操作完成,查看sqlite3 的版本已经成新的了

第八步、将路径传递给共享库

设置开机自启动执行,可以将下面的export LD_LIBRARY_PATH=/usr/local/sqlite/lib语句写入 ~/.bashrc 文件中,如果如果你想立即生效,可以执行source 〜/.bashrc 将在每次启动终端时执行
执行命令

vim ~/.bashrc 

在这里插入图片描述

第九步、进入Python环境检查sqlite3版本

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本次更新对于支持库来说,接口改动不大,模块版的话是尽量和支持库接口保持一致,所以对于以前的模块接口可能改动就大了。 要解决多线程问题,主要是对sqlite3的锁机制进行了解,和事务有密切的关系。本次更新的版本在开始事务时,增加了一个 事务锁状态 的参数。 拿简单的话来描述就是 开始事务 时如果 设置了 事务锁状态_ 立即 参数,那么这个时候其他线程的连接就不能写操作了,但是可以读操作,但是在提交事务时也要等待所有读操作完成了才能提交。 设置了 事务锁状态_ 独占 参数,那么这个时候其他线程的连接读写都不可以了。 在等待的时候就处于繁忙状态,我们可以设置 数据库.繁忙超时 ()来设置等待时间。 还有种情况还是会 死锁 ,就是记录集没有关闭,而且这次更新的支持库和模块都是必须 手动关闭记录集 的,所以一定注意。 当然多进程和多线程是一个道理,具体操作看例子。 esqlite3 V1.1 相对于1.0的更新 1、增加了全局命令: S3互斥体进入 S3互斥体退出 S3聚合上下文 S3取数据库自上下文 2、增加了zySqlite数据库 命令 繁忙超时 繁忙处理 取文件名 是否只读 取互斥体 是否自动提交 进度处理 取下一记录集 取总影响行 3、增加了 zySqlite记录集 命令 是否繁忙 是否只读 取数据库句柄 取行数 4、数据库.开始事务() 增加了 事务锁状态 参数,此参数在多线程中非常重要。 5、记录集必须手动关闭,任何内部方法都不再自动关闭。
本次更新对于支持库来说,接口改动不大,模块版的话是尽量和支持库接口保持一致,所以对于以前的模块接口可能改动就大了。 要解决多线程问题,主要是对sqlite3的锁机制进行了解,和事务有密切的关系。本次更新的版本在开始事务时,增加了一个 事务锁状态 的参数。 拿简单的话来描述就是 开始事务 时如果 设置了 事务锁状态_ 立即 参数,那么这个时候其他线程的连接就不能写操作了,但是可以读操作,但是在提交事务时也要等待所有读操作完成了才能提交。 设置了 事务锁状态_ 独占 参数,那么这个时候其他线程的连接读写都不可以了。 在等待的时候就处于繁忙状态,我们可以设置 数据库.繁忙超时()来设置等待时间。 还有种情况还是会死锁,就是记录集没有关闭,而且这次更新的支持库和模块都是必须手动关闭记录集的,所以一定注意。 当然多进程和多线程是一个道理,具体操作看例子。 esqlite3 V1.1 相对于1.0的更新 1、增加了全局命令: S3互斥体进入 S3互斥体退出 S3聚合上下文 S3取数据库自上下文 2、增加了zySqlite数据库 命令 繁忙超时 繁忙处理 取文件名 是否只读 取互斥体 是否自动提交 进度处理 取下一记录集 取总影响行 3、增加了 zySqlite记录集 命令 是否繁忙 是否只读 取数据库句柄 取行数 4、数据库.开始事务() 增加了 事务锁状态 参数,此参数在多线程中非常重要。 5、记录集必须手动关闭,任何内部方法都不再自动关闭。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值