psycopg2是Python語言的PostgreSQL數據庫接口,是對Psycopg 1.1.x版本進行的幾乎完全的改寫。它的主要優勢在於完全支持Python DB API 2.0,以及安全的多線程支持。它適用於隨時創建、銷毀大量游標的、和產生大量並發INSERT、UPDATE操作的多線程數據庫應用。Psycopg包內含 ZPsycopgDA,一個Zope數據庫接口。

python PostgreSQL連接訪問數據庫
1. psycopg2的安裝
pip3 install psycopg2
2. 導入包
import psycopg2 import psycopg2.extras
3. 類介紹
3.1 connection類
connection類表示數據庫連接對象。由psycopg2.connect()方法創建。
- 創建connection對象
psycopg2.connect()
函數創建一個新的數據庫會話(Session)並且返回一個連接對象。該函數的參數為:
· dbname – 數據庫名字
· user – 數據庫角色名稱
· password – 數據庫角色密碼
· host – 數據庫地址
· port – 端口
- 主要方法
· commit():提交任何未提交的事務(transaction)到數據庫。
· rollback():回滾。
· close():關閉數據庫。如果關閉數據庫時仍有未提交的事務,則執行回滾操作。
3.2 cursor類
用來在數據庫Session里執行PostgreSQL命令。
- 創建對象
cursor對象由
connection.cursor()
方法創建:
cur = conn.cursor()
- 主要方法
· execute(query, vars=None):執行SQL語句。
· fetchall():獲取所有查詢結果,返回值為tuple列表。
4. 具體操作
大致流程是:
1)連接PostgreSQL並設定Cursor
2)執行SQL腳本
#有幾點需要注意
- sql腳本必須以';'結尾,不可以省略
- 不管sql中有幾個參數,都需要用%s代替,只有%s, 不管值是字符還是數字, 一律%s.
- 第二個參數中,一定要傳入元組,上述例子中(5)是不行的
- 執行完INSERT, UPDATE, DELETE這樣的sql腳本后, 需要conn.commit()提交一下, 才會把數據提交到數據庫當中.
3)得到查詢結果
可以采用fetchone(), fetchall()和fetchmany() 三種方式。fetchone返回一個tuple或者None, fetchall返回一個list of tuple,如果沒有結果則返回一個空的tuple。fetchmany返回list of tuple, list的長度由size參數決定,size的默認值是cursor.arraysize, 如果沒有結果可以返回,那么返回一個空的list。
4.1 建立連接
conn = psycopg2.connect(dbname="mydb", user="postgres", password="1234", host="127.0.0.1", port="5432")
4.2 創建表
cur.execute( 'CREATE TABLE Employee (' 'name varchar(80),' 'address varchar(80),' 'age int,' 'date date' ')' )
4.3 插入數據
cur.execute("INSERT INTO Employee " "VALUES('Gopher', 'China Beijing', 100, '2017-05-27')")
4.4 查詢數據
cur.execute("SELECT * FROM Employee") rows = cur.fetchall() for row in rows: print('name=' + str(row[0]) + ' address=' + str(row[1]) + ' age=' + str(row[2]) + ' date=' + str(row[3]))
4.5 更新數據
cur.execute("UPDATE Employee SET age=12 WHERE name='Gopher'")
4.6 刪除數據
cur.execute("DELETE FROM Employee WHERE name='Gopher'")
參考:https://pynative.com/python-postgresql-tutorial/?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more