搞Python開發(fā),采用的數(shù)據(jù)庫是postgresql,因此需要安裝psycopg2,psycopg2則是專門就搞PostgreSQL,他的優(yōu)勢就在于它是專搞PostgreSQL,所以對PostgreSQL的一些特性支持會(huì)更好,也是PostgreSQL官方指定推薦的python driver,對于PostgreSQL這顆西瓜來說他就是最合適的西瓜刀。
psycopg2 介紹:
psycopg2 是Python語言的PostgreSQL數(shù)據(jù)庫接口,它的主要優(yōu)勢在于完全支持Python DB API 2.0,以及安全的多線程支持。它適用于隨時(shí)創(chuàng)建、銷毀大量游標(biāo)的、和產(chǎn)生大量并發(fā)INSERT、UPDATE操作的多線程數(shù)據(jù)庫應(yīng)用。Psycopg包內(nèi)含 ZPsycopgDA,一個(gè)Zope數(shù)據(jù)庫接口。
使用.whl安裝psycopg2
下載文件,我這里把psycopg2-2.7.3.2-cp36-cp36m-win_amd64.whl拷貝到安裝目錄下Scripts文件夾中。
cmd中運(yùn)行代碼:pip install C:\Python27\Scripts\psycopg2-2.7.3.2-cp36-cp36m-win_amd64.whl
運(yùn)行上邊的代碼,確認(rèn)是否刪除成功。
通過psycopg2操作數(shù)據(jù)庫:
使用賬戶postgres,創(chuàng)建測試數(shù)據(jù)庫testdb。
參考yiibai.comAPI:
S.N. API & 描述
1 psycopg2.connect(database="testdb", user="postgres", password="cohondob", host="127.0.0.1", port="5432")
這個(gè)API打開一個(gè)連接到PostgreSQL數(shù)據(jù)庫。如果成功打開數(shù)據(jù)庫時(shí),它返回一個(gè)連接對象。
2 connection.cursor()
該程序創(chuàng)建一個(gè)光標(biāo)將用于整個(gè)數(shù)據(jù)庫使用Python編程。
3 cursor.execute(sql [, optional parameters])
此例程執(zhí)行SQL語句?杀粎(shù)化的SQL語句(即占位符,而不是SQL文字)。 psycopg2的模塊支持占位符用%s標(biāo)志
例如:cursor.execute("insert into people values (%s, %s)", (who, age))
4 curosr.executemany(sql, seq_of_parameters)
該程序執(zhí)行SQL命令對所有參數(shù)序列或序列中的sql映射。
5 curosr.callproc(procname[, parameters])
這個(gè)程序執(zhí)行的存儲(chǔ)數(shù)據(jù)庫程序給定的名稱。該程序預(yù)計(jì)為每一個(gè)參數(shù),參數(shù)的順序必須包含一個(gè)條目。
6 cursor.rowcount
這個(gè)只讀屬性,它返回?cái)?shù)據(jù)庫中的行的總數(shù)已修改,插入或刪除最后 execute*().
7 connection.commit()
此方法提交當(dāng)前事務(wù)。如果不調(diào)用這個(gè)方法,無論做了什么修改,自從上次調(diào)用commit()是不可見的,從其他的數(shù)據(jù)庫連接。
8 connection.rollback()
此方法會(huì)回滾任何更改數(shù)據(jù)庫自上次調(diào)用commit()方法。
9 connection.close()
此方法關(guān)閉數(shù)據(jù)庫連接。請注意,這并不自動(dòng)調(diào)用commit()。如果你只是關(guān)閉數(shù)據(jù)庫連接而不調(diào)用commit()方法首先,那么所有更改將會(huì)丟失!
10 cursor.fetchone()
這種方法提取的查詢結(jié)果集的下一行,返回一個(gè)序列,或者無當(dāng)沒有更多的數(shù)據(jù)是可用的。
11 cursor.fetchmany([size=cursor.arraysize])
這個(gè)例程中取出下一個(gè)組的查詢結(jié)果的行數(shù),返回一個(gè)列表。當(dāng)沒有找到記錄,返回空列表。該方法試圖獲取盡可能多的行所顯示的大小參數(shù)。
12 cursor.fetchall()
這個(gè)例程獲取所有查詢結(jié)果(剩余)行,返回一個(gè)列表。空行時(shí)則返回空列表。
此類安裝中存在的一些問題:
python模塊的安裝包最重要的就是setup.py,一般來說setup.py文件的使用如下:
% python setup.py build #編譯
% python setup.py install #安裝
% python setup.py sdist #制作分發(fā)包
% python setup.py bdist_wininst #制作windows下的分發(fā)包
% python setup.py bdist_rpm
python是一種解釋性語言,假如包里全為python文件其實(shí)拷貝到LIb\site-packages下基本就可以,setup.py無非也就是執(zhí)行相關(guān)內(nèi)容,然而對于包括一部分是C語言編寫的安裝包就會(huì)出現(xiàn)問題了。linux下面基本不存在問題,因?yàn)間cc編譯支持非常好。在windows下面vc6,7,8,9,10,11,12,13之間兼容性都不好,而每一個(gè)Python版本對應(yīng)一個(gè)vc的編譯環(huán)境。比如python2.7默認(rèn)會(huì)去找vc9.0的編譯環(huán)境,但是現(xiàn)在裝vs2008的已經(jīng)不多了吧。如果沒有VS90COMNTOOLS環(huán)境變量,安裝就會(huì)有一個(gè)unable to find vcvarsall.bat錯(cuò)誤解決方法有幾個(gè):
第一,安裝mingw,編譯時(shí)使用python setup.py build –compiler=mingw32;
第二,設(shè)置環(huán)境變量VS90COMNTOOLS,可以臨時(shí)設(shè)置SET VS90COMNTOOLS=VS100COMNTOOLS vc10,SET VS90COMNTOOLS=VS110COMNTOOLS vc11。。。以此類推;
對于psycopg2則還需要先安裝postgresql(似乎linux下可以只安裝postgres-devel),另外需要把其bin目錄設(shè)為環(huán)境變量,使其可以訪問libpq.dll及其依賴庫。設(shè)置了這些之后基本psycopg2就可以正常工作了,測試成功的標(biāo)志就是import psycopg2 不出錯(cuò)就表示安裝成功了。