文章目录
- 场景
- 失败步骤
- 失败步骤一
- 失败步骤二
- 失败步骤三
- 失败步骤四
- 失败步骤五
- 。。。
- 替换成pgdb包
- 替换成pg8000
- 结束语
场景
python开发web接口操作数据库,包括mysql、mongodb、postgresql。mysql和mongodb都顺利启动,但是postgresql的时候打包了psycopg2,启动的时候无法找到psycopg2_init_.py
代码如下
from flask import Blueprintfrom flask import Blueprint, jsonify, request
import psycopg2
from psycopg2.extras import RealDictCursorpostgresql_bp = Blueprint('postgresql', __name__)DB_CONFIG = {'dbname': 'area','user': 'postgres','password': 'postgres','host': 'localhost','port': '5432'
}def get_db_connection():try:conn = psycopg2.connect(**DB_CONFIG)return connexcept Exception as e:print(f"数据库连接错误: {e}")return None
失败步骤
失败步骤一
1,重装postgresql,配置环境变量,
2,重启window后执行psql --version,能否准确显示版本号17.2
3,查阅可能是没有配置lib文件夹到环境变量,
4,新增lib文件配置,重启window
上面的步骤完成后,依旧无法解决这个问题
失败步骤二
怀疑是windows插件问题
2015-2022: https://aka.ms/vs/17/release/vc_redist.x64.exe
2013: https://aka.ms/highdpimfc2013x64enu
安装后无法解决
失败步骤三
安装通过visual studio安装桌面C++
安装后依旧无法解决
失败步骤四
采用集成的包代替,pip uninstall psycopg2-binary,
安装完后,依旧无法解决
失败步骤五
采用conda
# 创建新环境
conda create -n pgenv python=3.9
# 安装 psycopg2
conda install psycopg2
安装后测试,无法解决
。。。
哭晕在厕所,折腾了一个两个多小时了,脑壳疼。
何以解忧。。。
替换成pgdb包
GitHub上有同学是用pgdb包,所以打算试试
先卸载安装的包
pip uninstall psycopg2
pip uninstall psycopg2-binary
换pgdb包
from flask import Blueprint, jsonify, request
import pgdbpostgresql_bp = Blueprint('postgresql', __name__)# 启动postgresql,net start postgresql-x64-17.2
# 停止postgresql,net stop postgresql-x64-17.2
# 配置环境 D:\app\postgresql17、D:\app\postgresql17\bin、D:\app\postgresql17\lib
DB_CONFIG = {#'dbname': 'area', # psycopg2的使用方式'database': 'area','user': 'postgres','password': 'postgres','host': 'localhost',# 'port': '5432' # psycopg2的使用方式'port': 5432
}# psycopg2的使用方式
# def get_db_connection():
# try:
# conn = psycopg2.connect(**DB_CONFIG)
# return conn
# except Exception as e:
# print(f"数据库连接错误: {e}")
# return Nonedef get_db_connection():try:# pgdb 的连接方式略有不同conn = pgdb.connect(**DB_CONFIG)return connexcept Exception as e:print(f"数据库连接错误: {e}")return None
启动后发现还是包含了psycopg2,最后清理所有的缓存,清理了虚拟环境,然后重启,依旧报错。
看报错原来pgdb.py包含了psycopg2,导致报错出现DLL load failed while importing _psycopg: 找不到指定的模块。
。。。
于是
尝试降低版本,看是否可以逃脱,连续降三个版本,发现加载信息是Successfully installed pgdb-0.0.7a0 psycopg2-2.9.10,逃不掉的感觉,真要崩溃。最后降低到0.0.1版本,虽然没有显示加载 psycopg,但是打开pgdb还是有这个包
替换成pg8000
一把过
from flask import Blueprint, jsonify, request
import pg8000postgresql_bp = Blueprint('postgresql', __name__)# 启动postgresql,net start postgresql-x64-17.2
# 停止postgresql,net stop postgresql-x64-17.2
# 配置环境 D:\app\postgresql17、D:\app\postgresql17\bin、D:\app\postgresql17\lib
DB_CONFIG = {#'dbname': 'area', # psycopg2的使用方式'database': 'area','user': 'postgres','password': 'postgres','host': 'localhost',# 'port': '5432' # psycopg2的使用方式'port': 5432
}# psycopg2的使用方式
# def get_db_connection():
# try:
# conn = psycopg2.connect(**DB_CONFIG)
# return conn
# except Exception as e:
# print(f"数据库连接错误: {e}")
# return Nonedef get_db_connection():try:# pgdb 的连接方式略有不同conn = pg8000.connect(**DB_CONFIG)return connexcept Exception as e:print(f"数据库连接错误: {e}")return None
结束语
吸一口冬天的冷风,我心底也是如此