使用 psycopg2 遇到的一些坑

坑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。

坑1. 儘可能不要 pip install whl 文件

這次我離線下載了 psycopg2-binary 的文件,psycopg2_binary-2.8.6-cp36-cp36m-manylinux1_x86_64.whl

我分別試了兩種方法,第二種成功:

方法一:

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

方法一在執行 import psycopg2.extras 時報錯,方法二沒有。

方法二:

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

足以說明,使用 pip 最好還是聯網環境。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章