西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)其它知識 → Python通過psycopg2操作PostgreSQL

Python通過psycopg2操作PostgreSQL

相關軟件相關文章發(fā)表評論 來源:Cynhard85時間:2017/10/29 10:25:13字體大。A-A+

作者:Cynhard85點擊:1次評論:0次標簽: psycopg2 python PostgreSQL

psycopg22.7.3.2 官方最新版
  • 類型:運動健身大。3.5M語言:中文 評分:5.0
  • 標簽:
立即下載

psycopg2是Python編程語言的PostgreSQL數(shù)據(jù)庫的適配器。postgreSQL屬于關系型數(shù)據(jù)庫,支持Python通過DB-API,本文假設已經(jīng)安裝和配置好了PostgreSQL,要使用psycopg2的模塊,首先必須創(chuàng)建一個Connection對象,它表示數(shù)據(jù)庫然后再可以選擇創(chuàng)建游標對象,這將幫助執(zhí)行的所有SQL語句。

本例中用的操作系統(tǒng)為:

Debian GNU/Linux 8.2 (jessie)12

Python版本為:

Python 2.7.912

psycopg2的安裝

Debian下執(zhí)行以下命令安裝 psycopg2:

apt-get install python-psycopg21

安裝好后,就可以寫Python腳本來訪問PostgreSQL了。

導入psycopg2

想要使用psycopg2,必須用import語句導入該包:

import psycopg21

connection類

connection類表示數(shù)據(jù)庫連接對象。由psycopg2.connect()方法創(chuàng)建。

創(chuàng)建connection對象

psycopg2.connect()函數(shù)創(chuàng)建一個新的數(shù)據(jù)庫會話(Session)并且返回一個連接對象。該函數(shù)的參數(shù)為:

dbname – 數(shù)據(jù)庫名字

user – 數(shù)據(jù)庫角色名稱

password – 數(shù)據(jù)庫角色密碼

host – 數(shù)據(jù)庫地址

port – 端口

connection的主要方法

connection提供了常用的數(shù)據(jù)庫操作:

commit():提交任何未提交的事務(transaction)到數(shù)據(jù)庫。

rollback():回滾。

close():關閉數(shù)據(jù)庫。如果關閉數(shù)據(jù)庫時仍有未提交的事務,則執(zhí)行回滾操作。

cursor類

創(chuàng)建cursor對象

psycopg2提供了一個cursor類,用來在數(shù)據(jù)庫Session里執(zhí)行PostgreSQL命令。cursor對象由connection.cursor()方法創(chuàng)建:

cur = conn.cursor()1

cursor的主要方法

execute(query, vars=None):執(zhí)行SQL語句。

fetchall():獲取所有查詢結(jié)果,返回值為tuple列表。

有了cursor對象,就可以操作數(shù)據(jù)庫了。

建立數(shù)據(jù)庫連接

conn = psycopg2.connect(dbname="mydb", user="postgres",
       password="1234", host="127.0.0.1", port="5432")12

創(chuàng)建表

cur.execute(        'CREATE TABLE Employee ('
       'name    varchar(80),'
       'address varchar(80),'
       'age     int,'
       'date    date'
       ')'
   )12345678

插入數(shù)據(jù)

cur.execute("INSERT INTO Employee "
       "VALUES('Gopher', 'China Beijing', 100, '2017-05-27')")12

查詢數(shù)據(jù)

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]))12345

更新數(shù)據(jù)

cur.execute("UPDATE Employee SET age=12 WHERE name='Gopher'")1

刪除數(shù)據(jù)

cur.execute("DELETE FROM Employee WHERE name='Gopher'")1

完整示例

#coding=utf-8import psycopg2# 連接數(shù)據(jù)庫conn = psycopg2.connect(dbname="mydb", user="postgres",
       password="1234", host="127.0.0.1", port="5432")# 創(chuàng)建cursor以訪問數(shù)據(jù)庫cur = conn.cursor()# 創(chuàng)建表cur.execute(        'CREATE TABLE Employee ('
       'name    varchar(80),'
       'address varchar(80),'
       'age     int,'
       'date    date'
       ')'
   )# 插入數(shù)據(jù)cur.execute("INSERT INTO Employee "
       "VALUES('Gopher', 'China Beijing', 100, '2017-05-27')")# 查詢數(shù)據(jù)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]))# 更新數(shù)據(jù)cur.execute("UPDATE Employee SET age=12 WHERE name='Gopher'")# 刪除數(shù)據(jù)cur.execute("DELETE FROM Employee WHERE name='Gopher'")# 提交事務conn.commit()# 關閉連接conn.close()

Python psycopg2 模塊APIs

以下是psycopg2的重要的的模塊例程可以滿足Python程序與PostgreSQL數(shù)據(jù)庫的工作。如果尋找一個更復雜的應用程序,那么可以看看Python psycopg2的模塊的官方文檔。

S.N.
API & 描述
1
psycopg2.connect(database="testdb", user="postgres", password="cohondob", host="127.0.0.1", port="5432") 

這個API打開一個連接到PostgreSQL數(shù)據(jù)庫。如果成功打開數(shù)據(jù)庫時,它返回一個連接對象。
2
connection.cursor()

該程序創(chuàng)建一個光標將用于整個數(shù)據(jù)庫使用Python編程。
3
cursor.execute(sql [, optional parameters])

此例程執(zhí)行SQL語句?杀粎(shù)化的SQL語句(即占位符,而不是SQL文字)。 psycopg2的模塊支持占位符用%s標志
例如: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])

這個程序執(zhí)行的存儲數(shù)據(jù)庫程序給定的名稱。該程序預計為每一個參數(shù),參數(shù)的順序必須包含一個條目。


6
cursor.rowcount

這個只讀屬性,它返回數(shù)據(jù)庫中的行的總數(shù)已修改,插入或刪除最后 execute*().


7
connection.commit()

此方法提交當前事務。如果不調(diào)用這個方法,無論做了什么修改,自從上次調(diào)用commit()是不可見的,從其他的數(shù)據(jù)庫連接。


8
connection.rollback()

此方法會回滾任何更改數(shù)據(jù)庫自上次調(diào)用commit()方法。


9
connection.close()

此方法關閉數(shù)據(jù)庫連接。請注意,這并不自動調(diào)用commit()。如果你只是關閉數(shù)據(jù)庫連接而不調(diào)用commit()方法首先,那么所有更改將會丟失!
10
cursor.fetchone()

這種方法提取的查詢結(jié)果集的下一行,返回一個序列,或者無當沒有更多的數(shù)據(jù)是可用的。


11
cursor.fetchmany([size=cursor.arraysize])

這個例程中取出下一個組的查詢結(jié)果的行數(shù),返回一個列表。當沒有找到記錄,返回空列表。該方法試圖獲取盡可能多的行所顯示的大小參數(shù)。


12
cursor.fetchall()

這個例程獲取所有查詢結(jié)果(剩余)行,返回一個列表。空行時則返回空列表。

連接到數(shù)據(jù)庫

Python代碼顯示了如何連接到一個現(xiàn)有的數(shù)據(jù)庫。如果數(shù)據(jù)庫不存在,那么它就會被創(chuàng)建,最終將返回一個數(shù)據(jù)庫對象。

 

#!/usr/bin/pythonimport psycopg2 conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")print "Opened database successfully"

 

在這里,也可以提供數(shù)據(jù)庫testdb的名稱,如果數(shù)據(jù)庫成功打開,那么它會給下面的消息:

Open database successfully

    相關評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)