溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python3安裝psycopy2以及遇到問題解決方法

發(fā)布時間:2020-10-24 21:36:04 來源:腳本之家 閱讀:272 作者:str999_cn 欄目:開發(fā)技術(shù)

事先在網(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/)上,準(zhǔn)備用wheel的方式進(jìn)行安裝。

不過在此網(wǎng)頁上突然瞟到一句:

Python3安裝psycopy2以及遇到問題解決方法

翻譯過來就是:“如果你的pip版本支持wheel包,那么可以僅僅允許pip命令即可安裝一個二進(jìn)制的Psycopg版本,包括所有依賴項”。心中竊喜。

但是我windows7里安裝的python一直沒有設(shè)置環(huán)境變量,一直用的Anaconda下面的一個spyder圖形編程界面,所以在命令行下還不能直接使用python?,F(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命令了。

Python3安裝psycopy2以及遇到問題解決方法

Python3安裝psycopy2以及遇到問題解決方法

Python3安裝psycopy2以及遇到問題解決方法

Python3安裝psycopy2以及遇到問題解決方法

至此,psycopg2成功安裝。

再來看spyder中python程序操作PostgreSQL數(shù)據(jù)庫的代碼和運行結(jié)果:

Python3安裝psycopy2以及遇到問題解決方法

        上述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個字段。見下表:

Python3安裝psycopy2以及遇到問題解決方法

 

------------------------------------------------------------------------------------

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

Python3安裝psycopy2以及遇到問題解決方法

Python3安裝psycopy2以及遇到問題解決方法

 Python3安裝psycopy2以及遇到問題解決方法

注意,pip3文件不是最新版本,直接下載會出錯,需要對pip首先進(jìn)行更新。但更新的過程中可能會出錯,連續(xù)多嘗試幾次,最后應(yīng)該會成功。

更新之后,即可按照原先的方法進(jìn)行下載了。

內(nèi)容擴(kuò)展:

Python——使用psycopy2操作PostgreSQL

Psycopg2與其他實現(xiàn)了DB API 2.0協(xié)議的其他數(shù)據(jù)庫用戶基本一致。當(dāng)執(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'])
 
    # 打開一個光標(biāo),用來執(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)閉光標(biāo)
    self.cur.close()
    # 關(guān)閉連接
    self.con.close()

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI