使用 Psycopg2 时遇到的两个坑

开发 前端
我在使用 psycopg2-binary 遇到两个坑,写出来,看看你是否踩过,如果没有,可以看一下,以后避免跳坑。

[[429010]]

我在使用 psycopg2-binary 遇到两个坑,写出来,看看你是否踩过,如果没有,可以看一下,以后避免跳坑。

坑1. 尽可能不要使用 psycopg2-binary

官方文档说了,psycopg2-binary 不需要编译,可以认为是绿色版,是为了初学者用 Python 快速和 PostgreSQL 进行连接而用的, 如果你在 pypi 上发包,也不应该依赖 psycopg2-binary,应该直接依赖 psycopg2。

我没听,直接在生产环境用了 psycopg2-binary,版本 2.7.5 ,结果就中招了,在使用 server-side-cursor (named cursor)的时候,经常出现读数据库卡住不动的情况,怀疑跟这个版本的 bug 有关系。

为啥不直接从源代码安装,因为总是报 pg_config not found 之类的错误,而生产环境,安装一个 postgresql-lib 是相当麻烦的。

我想这也是 python 的缺点之一,依赖的包很多需要编译,而编译就会出现缺少各种各样的包的问题,这样就不能称之为跨平台了,我在 mac 上写好,弄到 linux 上,还得折腾一大堆,java 这一点就很好。

最后怎么解决的呢,升级到最新版本的 psycopg2-binary 就解决了,如果再出现,只能老老实实安装 postgresql-lib。

坑2. 尽可能不要 pip install whl 文件

这次我离线下载了 psycopg2-binary 的文件,psycopg2_binary-2.8.6-cp36-cp36m-manylinux1_x86_64.whl

我分别试了两种方法,第二种成功:

方法一:

  1. pip install psycopg2_binary-2.8.6-cp36-cp36m-manylinux1_x86_64.whl 

方法一在执行 import psycopg2.extras 时报错,方法二没有。

方法二:

  1. pip install psycopg2-binary --no-index -f ./ 

足以说明,使用 pip 最好还是联网环境。

最后的话 

在使用开源软件包时,一定要看下官方文档的说明,尤其那些注意事项,这样就可以节省很多排错时间。

 

责任编辑:武晓燕 来源: Python七号
相关推荐

2010-07-13 10:56:43

Perl print

2021-01-13 09:14:00

缓存穿透RPC

2013-05-13 10:03:04

git

2012-09-20 09:24:36

编程学习编程开发

2013-06-19 09:49:28

编程学习

2018-02-07 11:15:07

Vagrant使用问题

2010-03-05 16:03:30

Python连接数据库

2020-06-22 07:23:57

Kubernetes容器开发

2023-03-14 07:23:48

ReactJSX语法

2011-07-19 10:49:34

FCoEiSCSI以太网

2017-07-14 09:29:45

AndroidWebview

2021-05-07 08:03:05

JS动态合并

2022-06-17 09:46:51

Chrome 102Chrome浏览器

2018-07-16 14:23:30

代码Android问题

2009-07-15 18:29:22

Jython应用

2010-07-02 12:26:51

LEACH协议

2017-08-01 05:44:10

Dockerweave虚拟机

2020-08-31 11:40:54

VimLinux字符

2020-11-13 07:16:09

线程互斥锁死循环

2024-04-10 08:39:56

BigDecimal浮点数二进制
点赞
收藏

51CTO技术栈公众号