PostgreSQL | psycopg2語句匯總


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM