Python3安裝psycopy2以及遇到問題解決方法
事先在網(wǎng)上搜索了一大圈,頭都大了,看到那么多文章寫道在python里安裝psycopg2的各種坑和各種麻煩,各種不成功。搜索了一下午,索性外出放松。晚飯后,又繼續(xù)上psycopg2官網(wǎng)(http://initd.org/psycopg/docs/install.html)看了一些有關(guān)install的資料,感覺還是麻煩。最后上這個網(wǎng)(https://pypi.python.org/pypi/psycopg2/)上,準備用wheel的方式進行安裝。
不過在此網(wǎng)頁上突然瞟到一句:

翻譯過來就是:“如果你的pip版本支持wheel包,那么可以僅僅允許pip命令即可安裝一個二進制的Psycopg版本,包括所有依賴項”。心中竊喜。
但是我windows7里安裝的python一直沒有設(shè)置環(huán)境變量,一直用的Anaconda下面的一個spyder圖形編程界面,所以在命令行下還不能直接使用python。現(xiàn)在首先在環(huán)境變量的path里添加“C:\Users\Tom\Anaconda3”,這個是Anaconda3在電腦里的安裝目錄(因為我的python是通過Anaconda安裝的)。之后在命令行運行pip,發(fā)現(xiàn)還是不行,查看后發(fā)現(xiàn)pip位于Anaconda文件夾下面的Scripts文件夾下。所以還要添加“C:\Users\Tom\Anaconda3\Scripts”到環(huán)境變量,之后就可以在命令行里運行pip命令了。




至此,psycopg2成功安裝。
再來看spyder中python程序操作PostgreSQL數(shù)據(jù)庫的代碼和運行結(jié)果:

上述python代碼連接到articles數(shù)據(jù)庫,在其中創(chuàng)建了一個叫做Urls的數(shù)據(jù)表,該表有2個字段,第一個是字段ID,第二個是字段URL。我們打開pgAdmin4,在其中,發(fā)現(xiàn)articles數(shù)據(jù)庫里已經(jīng)出現(xiàn)了Urls數(shù)據(jù)表,且包含剛剛創(chuàng)建的2個字段。見下表:

------------------------------------------------------------------------------------
如果不采用Anaconda的安裝包,而直接使用的Python.org官網(wǎng)上的安裝包,安裝完成后是沒有pip.exe文件的。需要在python窗口另外執(zhí)行以下命令,然后在Scripts文件夾下即能看到剛剛生產(chǎn)的幾個pip文件。



注意,pip3文件不是最新版本,直接下載會出錯,需要對pip首先進行更新。但更新的過程中可能會出錯,連續(xù)多嘗試幾次,最后應(yīng)該會成功。
更新之后,即可按照原先的方法進行下載了。
內(nèi)容擴展:
Python——使用psycopy2操作PostgreSQL
Psycopg2與其他實現(xiàn)了DB API 2.0協(xié)議的其他數(shù)據(jù)庫用戶基本一致。當執(zhí)行包含特殊字符的SQL語句的時候,傳遞數(shù)據(jù)用來填充查詢占位符, 讓Psycopg執(zhí)行正確的轉(zhuǎn)換(不再有SQL注入)
# encoding: utf-8
__author__ = 'chenlong'
import psycopg2
from config import ConfigServer
class PGSQLdb:
def __init__(self):
self.tryconnect()
def tryconnect(self):
# 連接到數(shù)據(jù)庫
self.con=psycopg2.connect(database = ConfigServer['pg_db'],
user = ConfigServer['pg_user'],
password = ConfigServer['pg_pass'],
host= ConfigServer['pg_host'],
port = ConfigServer['pg_port'])
# 打開一個光標,用來執(zhí)行數(shù)據(jù)庫操作
self.cur=self.con.cursor()
def tryexecute(self,sqlstr):
# 執(zhí)行命令
self.cur.execute(sqlstr)
# 使改變永久存入數(shù)據(jù)庫
self.con.commit()
def tryexecute2(self,sqlstr,data):
# 傳遞數(shù)據(jù)用來填充查詢占位符, 讓Psycopg執(zhí)行正確的轉(zhuǎn)換(不再有SQL注入)
# 第一個參數(shù):包含占位符的SQL語句,如:"INSERT INTO test (num, data) VALUES (%s, %s)"
# 第二個參數(shù):與占位符對應(yīng)的值,如: (100, "abc'def")
self.cur.execute(sqlstr,data)
self.con.commit()
def tryclose(self):
# 關(guān)閉光標
self.cur.close()
# 關(guān)閉連接
self.con.close()
相關(guān)文章
pytest文檔內(nèi)置fixture的request詳情
這篇文章主要介紹了pytest文檔內(nèi)置fixture的request詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08
端午節(jié)將至,用Python爬取粽子數(shù)據(jù)并可視化,看看網(wǎng)友喜歡哪種粽子吧!
端午節(jié)快要到了,旅游?回家?拜訪親友?少不了要帶上粽子.那么:選擇什么牌子的粽子呢?選擇什么口味的粽子呢?選擇什么價格區(qū)間呢?今天爬取了京東上面的 “粽子數(shù)據(jù)” 進行分析,看看有啥發(fā)現(xiàn)吧!,需要的朋友可以參考下2021-06-06

