python psycopg2使用_Python中用psycopg2模块操作PostgreSQL方法
其實(shí)在Python中可以用來連接PostgreSQL的模塊很多,這里比較推薦psycopg2。psycopg2安裝起來非常的簡單(pip install psycopg2),這里主要重點(diǎn)介紹下如何使用。
安裝psycopg2模塊:
怎么驗(yàn)證是否已經(jīng)安裝過psycopy2?
編寫上面代碼,運(yùn)行看是否拋出缺少psycopg2模塊。
安裝方法1:
1)使用psycopg2-2.4.2.win-amd64-py2.7-pg9.0.4-release.exe安裝,下載地址:http://vdisk.weibo.com/s/Cd8pPaw56Ozys
直接運(yùn)行exe,不出錯(cuò)誤,運(yùn)行上邊代碼驗(yàn)證代碼無錯(cuò)誤,基本算是安裝完成了。
2)怎么卸載?
2.1)找到安裝目錄:C:\Python27,發(fā)現(xiàn)下邊包含文件:Removepsycopg2.exe,運(yùn)行,來刪除;
2.2)如果運(yùn)行失敗的話,進(jìn)入目錄:C:\Python27\Lib\site-packages下,找到psycopg2文件夾和psycopg2-2.4.2-py2.7.egg-info文件,右鍵刪除。
2.3)運(yùn)行上邊的代碼,確認(rèn)是否刪除成功。
安裝方法2:
下載文件:psycopg2-2.6.2-cp27-none-win_amd64.whl
我這里把psycopg2-2.6.2-cp27-none-win_amd64.whl拷貝到安裝目錄下Scripts文件夾中。
cmd中運(yùn)行代碼:pip install C:\Python27\Scripts\psycopg2-2.6.2-cp27-none-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è)連接對(duì)象。
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命令對(duì)所有參數(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ù)庫連接。請(qǐng)注意,這并不自動(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í)則返回空列表。
打開數(shù)據(jù)庫連接:
import os
import sys
import psycopg2
def connectPostgreSQL():
conn = psycopg2.connect(database="testdb",password="new.1234",port="5432")
print 'connect successful!'
if __name__=='__main__':
connectPostgreSQL()
創(chuàng)建表操作:
import os
import sys
import psycopg2
def connectPostgreSQL():
conn = psycopg2.connect(database="testdb",port="5432")
print 'connect successful!'
cursor=conn.cursor()
cursor.execute('''create table public.member(
id integer not null primary key,name varchar(32) not null,password varchar(32) not null,singal varchar(128)
)''')
conn.commit()
conn.close()
print 'table public.member is created!'
if __name__=='__main__':
connectPostgreSQL()
Insert 操作:
import os
import sys
import psycopg2
def connectPostgreSQL():
conn = psycopg2.connect(database="testdb",port="5432")
print 'connect successful!'
cursor=conn.cursor()
cursor.execute('''create table public.member(
id integer not null primary key,singal varchar(128)
)''')
conn.commit()
conn.close()
print 'table public.member is created!'
def insertOperate():
conn = psycopg2.connect(database="testdb",port="5432")
cursor=conn.cursor()
cursor.execute("insert into public.member(id,name,password,singal)\
values(1,'member0','password0','signal0')")
cursor.execute("insert into public.member(id,singal)\
values(2,'member1','password1','signal1')")
cursor.execute("insert into public.member(id,singal)\
values(3,'member2','password2','signal2')")
cursor.execute("insert into public.member(id,singal)\
values(4,'member3','password3','signal3')")
conn.commit()
conn.close()
print 'insert records into public.memmber successfully'
if __name__=='__main__':
#connectPostgreSQL()
insertOperate()
Select 操作:
import os
import sys
import psycopg2
def connectPostgreSQL():
conn = psycopg2.connect(database="testdb",singal varchar(128)
)''')
conn.commit()
conn.close()
print 'table public.member is created!'
def insertOperate():
conn = psycopg2.connect(database="testdb",'signal3')")
conn.commit()
conn.close()
print 'insert records into public.memmber successfully'
def selectOperate():
conn = psycopg2.connect(database="testdb",port="5432")
cursor=conn.cursor()
cursor.execute("select id,singal from public.member where id>2")
rows=cursor.fetchall()
for row in rows:
print 'id=',row[0],',name=',row[1],pwd=',row[2],singal=',row[3],'\n'
conn.close()
if __name__=='__main__':
#connectPostgreSQL()
#insertOperate()
selectOperate()
結(jié)果:
Python 2.7.12 (v2.7.12:d33e0cf91556,Jun 27 2016,15:24:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "copyright","credits" or "license()" for more information.
>>>
========== RESTART: C:\Users\Administrator\Desktop\mutilpleTest.py ==========
id= 3,name= member2,pwd= password2,singal= signal2
id= 4,name= member3,pwd= password3,singal= signal3
>>>
update操作:
import os
import sys
import psycopg2
def connectPostgreSQL():
conn = psycopg2.connect(database="testdb",'\n'
conn.close()
def updateOperate():
conn = psycopg2.connect(database="testdb",port="5432")
cursor=conn.cursor()
cursor.execute("update public.member set name='update ...' where id=2")
conn.commit()
print "Total number of rows updated :",cursor.rowcount
cursor.execute("select id,singal from public.member")
rows=cursor.fetchall()
for row in rows:
print 'id=','\n'
conn.close()
if __name__=='__main__':
#connectPostgreSQL()
#insertOperate()
#selectOperate()
updateOperate()
結(jié)果:
Python 2.7.12 (v2.7.12:d33e0cf91556,"credits" or "license()" for more information.
>>>
========== RESTART: C:\Users\Administrator\Desktop\mutilpleTest.py ==========
Total number of rows updated : 1
id= 1,name= member0,pwd= password0,singal= signal0
id= 3,singal= signal3
id= 2,name= update ...,pwd= password1,singal= signal1
>>>
Delete操作:
import os
import sys
import psycopg2
def connectPostgreSQL():
conn = psycopg2.connect(database="testdb",'\n'
conn.close()
def deleteOperate():
conn = psycopg2.connect(database="testdb",port="5432")
cursor=conn.cursor()
cursor.execute("select id,'\n'
print 'begin delete'
cursor.execute("delete from public.member where id=2")
conn.commit()
print 'end delete'
print "Total number of rows deleted :",cursor.rowcount
cursor.execute("select id,'\n'
conn.close()
if __name__=='__main__':
#connectPostgreSQL()
#insertOperate()
#selectOperate()
#updateOperate()
deleteOperate()
結(jié)果:
Python 2.7.12 (v2.7.12:d33e0cf91556,"credits" or "license()" for more information.
>>>
========== RESTART: C:\Users\Administrator\Desktop\mutilpleTest.py ==========
id= 1,singal= signal1
begin delete
end delete
Total number of rows deleted : 1
id= 1,singal= signal3
>>>
總結(jié)
以上是生活随笔為你收集整理的python psycopg2使用_Python中用psycopg2模块操作PostgreSQL方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生活用电中的谷电是什么意思 生活用电中的
- 下一篇: 金钱是什么 金钱是货币吗