您好,登錄后才能下訂單哦!
事先在網上搜索了一大圈,頭都大了,看到那么多文章寫道在python里安裝psycopg2的各種坑和各種麻煩,各種不成功。搜索了一下午,索性外出放松。晚飯后,又繼續上psycopg2官網(http://initd.org/psycopg/docs/install.html)看了一些有關install的資料,感覺還是麻煩。最后上這個網(https://pypi.python.org/pypi/psycopg2/)上,準備用wheel的方式進行安裝。
不過在此網頁上突然瞟到一句:
翻譯過來就是:“如果你的pip版本支持wheel包,那么可以僅僅允許pip命令即可安裝一個二進制的Psycopg版本,包括所有依賴項”。心中竊喜。
但是我windows7里安裝的python一直沒有設置環境變量,一直用的Anaconda下面的一個spyder圖形編程界面,所以在命令行下還不能直接使用python。現在首先在環境變量的path里添加“C:\Users\Tom\Anaconda3”,這個是Anaconda3在電腦里的安裝目錄(因為我的python是通過Anaconda安裝的)。之后在命令行運行pip,發現還是不行,查看后發現pip位于Anaconda文件夾下面的Scripts文件夾下。所以還要添加“C:\Users\Tom\Anaconda3\Scripts”到環境變量,之后就可以在命令行里運行pip命令了。
至此,psycopg2成功安裝。
再來看spyder中python程序操作PostgreSQL數據庫的代碼和運行結果:
上述python代碼連接到articles數據庫,在其中創建了一個叫做Urls的數據表,該表有2個字段,第一個是字段ID,第二個是字段URL。我們打開pgAdmin4,在其中,發現articles數據庫里已經出現了Urls數據表,且包含剛剛創建的2個字段。見下表:
------------------------------------------------------------------------------------
如果不采用Anaconda的安裝包,而直接使用的Python.org官網上的安裝包,安裝完成后是沒有pip.exe文件的。需要在python窗口另外執行以下命令,然后在Scripts文件夾下即能看到剛剛生產的幾個pip文件。
注意,pip3文件不是最新版本,直接下載會出錯,需要對pip首先進行更新。但更新的過程中可能會出錯,連續多嘗試幾次,最后應該會成功。
更新之后,即可按照原先的方法進行下載了。
內容擴展:
Python——使用psycopy2操作PostgreSQL
Psycopg2與其他實現了DB API 2.0協議的其他數據庫用戶基本一致。當執行包含特殊字符的SQL語句的時候,傳遞數據用來填充查詢占位符, 讓Psycopg執行正確的轉換(不再有SQL注入)
# encoding: utf-8 __author__ = 'chenlong' import psycopg2 from config import ConfigServer class PGSQLdb: def __init__(self): self.tryconnect() def tryconnect(self): # 連接到數據庫 self.con=psycopg2.connect(database = ConfigServer['pg_db'], user = ConfigServer['pg_user'], password = ConfigServer['pg_pass'], host= ConfigServer['pg_host'], port = ConfigServer['pg_port']) # 打開一個光標,用來執行數據庫操作 self.cur=self.con.cursor() def tryexecute(self,sqlstr): # 執行命令 self.cur.execute(sqlstr) # 使改變永久存入數據庫 self.con.commit() def tryexecute2(self,sqlstr,data): # 傳遞數據用來填充查詢占位符, 讓Psycopg執行正確的轉換(不再有SQL注入) # 第一個參數:包含占位符的SQL語句,如:"INSERT INTO test (num, data) VALUES (%s, %s)" # 第二個參數:與占位符對應的值,如: (100, "abc'def") self.cur.execute(sqlstr,data) self.con.commit() def tryclose(self): # 關閉光標 self.cur.close() # 關閉連接 self.con.close()
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。