CentOS7上的python3更新sqlite3版本

问题

报错:

sqlite3.DatabaseError: malformed database schema(is_transient) - near "where": syntax error

原因:
sqlite3版本太低,下面命令查看python用的sqlite3版本

import sqlite3
sqlite3.sqlite_version

显示sqlite3的版本是3.7

处理

  1. 更新sqlite3
  2. 重新安装python
    (我这里,如果只安装新版本的sqlite3,python的sqlite3还是旧的。所以我这里重装了python)

步骤

更新sqlite3
  1. 下载sqlite-autoconf版本的,https://www.sqlite.org/download.html
  2. 安装sqlite
tar -xzvf sqlite-autoconf-3380500.tar.gz
cd sqlite-autoconf-3380500
./configure
make install
重新安装python
  1. 下载python3,https://www.python.org/ftp/python/
  2. 重装python3,要加LD_RUN_PATH,因为新装的sqlite3库文件在/usr/local/lib,不加LD_RUN_PATH找不到新的库,会导致重装python3后任然用的旧版sqlit3
tar -xzvf Python-3.9.7.tgz
cd Python-3.9.7
LD_RUN_PATH=/usr/local/lib ./configure --prefix=/usr/local/python3 --with-openssl=/usr/lib/openssl
LD_RUN_PATH=/usr/local/lib make && LD_RUN_PATH=/usr/local/lib make install
  1. 替换掉旧的python3
mv /usr/bin/python3 /usr/bin/python3_old
mv /usr/bin/pip3 /usr/bin/pip3_old
ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.9 /usr/bin/pip3

测试更新成功

import sqlite3
sqlite3.sqlite_version

sqlite3更新到了3.38.5,更新成功

image.png

你可能感兴趣的:(CentOS7上的python3更新sqlite3版本)