Python PostgreSQL Psycopg2

【轉】 http://daigong.iteye.com/blog/901160sql

Python若是要操做Postgresql,須要一個API,這就須要Psycopg2數據庫

1. 連接PostgreSQL並設定Cursor 

import psycopg2 

import psycopg2.extras 

conn = psycopg2.connect(host=’localhost’, port=5432, user=’postgres’, password=’postgres’, database=’test’) # connect()也可使用一個大的字符串參數, 好比」host=localhost port=5432 user=postgres password=postgres dbname=test」 

cursor = conn.cursor(cursor_factory=psycopg2.extras.DictCursor) #這裏建立的是一個字典Cursor, 這樣返回的數據, 都是字典的形式, 方便使用 函數

2. 執行SQL腳本 

cursor.execute(‘SELECT * FROM test WHERE id > %s;’, (5,)) 

這裏的使用有一些奇怪, 有幾個地方須要說明. 首先, sql腳本必須以;結尾, 不能夠省略. 其次, 無論sql中有幾個參數, 都須要用%s代替, 只有%s, 無論值是字符仍是數字, 一概%s. 最後, 第二個參數中, 必定要傳如元祖, 哪怕只有一個元素, 像我剛纔的例子同樣, (5)這樣是不行的. 

3. 獲得查詢結果 

psycopg2提供了3種獲得結果的方式, fetchone(), fetchall()和fetchmany(). fetchone()返回一條結果, 若是找不到, 返回None. fetchall()返回全部結果, 若是找不到, 返回空list. fetchmany接收1個參數, 即返回的結果數, 每次調用, 遊標向後移, 找不到了, 就返回空list. 

4. 查看生成的sql腳本 

cursor.mogrify(‘SELECT * FROM test WHERE a = %s AND b = %s;’, (‘a’, ‘b’)) 

mogrify()函數會返回生成的sql腳本, 用以查看生成的sql是否正確. 

5. 查看上一條執行的腳本 

cursor.query 

這是一個只讀的屬性, 用以查看上次執行的sql腳本. 

6. 插入數據 

執行完INSERT, UPDATE, DELETE這樣的sql腳本後, 須要conn.commit()提交一下, 纔會把數據提交到數據庫當中. 切記. 

這裏有幾個小技巧, 你們確定會用的上的. 

1. 取得最後插入的記錄的ID 

在INSERT的語句最後面加上RETURNING id便可, 好比: 

cursor.execute(‘INSERT INTO test (a, b) VALUES (%s, %s) RETURNING id;’, (‘a’, ‘b’)) 

item = cursor.fetchone() 

print item[0] #這裏就是剛纔插入的記錄的ID了 post

相關文章
相關標籤/搜索