安裝psycopg2模塊:
postgresql client ---Navicat Premium
- 怎么驗證是否已經安裝過psycopy2?
編寫上面代碼,運行看是否拋出缺少psycopg2模塊。
- 安裝方法1:
1)使用psycopg2-2.4.2.win-amd64-py2.7-pg9.0.4-release.exe安裝,下載地址:http://vdisk.weibo.com/s/Cd8pPaw56Ozys
直接運行exe,不出錯誤,運行上邊代碼驗證代碼無錯誤,基本算是安裝完成了。
2)怎么卸載?
2.1)找到安裝目錄:C:\Python27,發現下邊包含文件:Removepsycopg2.exe,運行,來刪除;
2.2)如果運行失敗的話,進入目錄:C:\Python27\Lib\site-packages下,找到psycopg2文件夾和psycopg2-2.4.2-py2.7.egg-info文件,右鍵刪除。
2.3)運行上邊的代碼,確認是否刪除成功。
- 安裝方法2:
使用.whl安裝,下載地址:https://pypi.python.org/pypi/psycopg2/
下載文件:psycopg2-2.6.2-cp27-none-win_amd64.whl
我這里把psycopg2-2.6.2-cp27-none-win_amd64.whl拷貝到安裝目錄下Scripts文件夾中。
cmd中運行代碼:pip install C:\Python27\Scripts\psycopg2-2.6.2-cp27-none-win_amd64.whl
運行上邊的代碼,確認是否刪除成功。
- 通過psycopg2操作數據庫:
使用賬戶postgres,創建測試數據庫testdb。
參考yiibai.comAPI:
S.N. API & 描述
1 psycopg2.connect(database="testdb", user="postgres", password="cohondob", host="127.0.0.1", port="5432")
這個API打開一個連接到PostgreSQL數據庫。如果成功打開數據庫時,它返回一個連接對象。
2 connection.cursor()
該程序創建一個光標將用於整個數據庫使用Python編程。
3 cursor.execute(sql [, optional parameters])
此例程執行SQL語句。可被參數化的SQL語句(即占位符,而不是SQL文字)。 psycopg2的模塊支持占位符用%s標志
例如:cursor.execute("insert into people values (%s, %s)", (who, age))
4 curosr.executemany(sql, seq_of_parameters)
該程序執行SQL命令對所有參數序列或序列中的sql映射。
5 curosr.callproc(procname[, parameters])
這個程序執行的存儲數據庫程序給定的名稱。該程序預計為每一個參數,參數的順序必須包含一個條目。
6 cursor.rowcount
這個只讀屬性,它返回數據庫中的行的總數已修改,插入或刪除最后 execute*().
7 connection.commit()
此方法提交當前事務。如果不調用這個方法,無論做了什么修改,自從上次調用commit()是不可見的,從其他的數據庫連接。
8 connection.rollback()
此方法會回滾任何更改數據庫自上次調用commit()方法。
9 connection.close()
此方法關閉數據庫連接。請注意,這並不自動調用commit()。如果你只是關閉數據庫連接而不調用commit()方法首先,那么所有更改將會丟失!
10 cursor.fetchone()
這種方法提取的查詢結果集的下一行,返回一個序列,或者無當沒有更多的數據是可用的。
11 cursor.fetchmany([size=cursor.arraysize])
這個例程中取出下一個組的查詢結果的行數,返回一個列表。當沒有找到記錄,返回空列表。該方法試圖獲取盡可能多的行所顯示的大小參數。
12 cursor.fetchall()
這個例程獲取所有查詢結果(剩余)行,返回一個列表。空行時則返回空列表。
- 打開數據庫連接:
1 import os 2 import sys 3 import psycopg2 4 5 def connectPostgreSQL(): 6 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 7 print 'connect successful!' 8 9 if __name__=='__main__': 10 connectPostgreSQL() 11
- 創建表操作:
1 import os 2 import sys 3 import psycopg2 4 5 def connectPostgreSQL(): 6 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 7 print 'connect successful!' 8 cursor=conn.cursor() 9 cursor.execute('''create table public.member( 10 id integer not null primary key, 11 name varchar(32) not null, 12 password varchar(32) not null, 13 singal varchar(128) 14 )''') 15 conn.commit() 16 conn.close() 17 print 'table public.member is created!' 18 19 if __name__=='__main__': 20 connectPostgreSQL() 21
- Insert 操作:
1 import os 2 import sys 3 import psycopg2 4 5 def connectPostgreSQL(): 6 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 7 print 'connect successful!' 8 cursor=conn.cursor() 9 cursor.execute('''create table public.member( 10 id integer not null primary key, 11 name varchar(32) not null, 12 password varchar(32) not null, 13 singal varchar(128) 14 )''') 15 conn.commit() 16 conn.close() 17 print 'table public.member is created!' 18 19 def insertOperate(): 20 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 21 cursor=conn.cursor() 22 cursor.execute("insert into public.member(id,name,password,singal)\ 23 values(1,'member0','password0','signal0')") 24 cursor.execute("insert into public.member(id,name,password,singal)\ 25 values(2,'member1','password1','signal1')") 26 cursor.execute("insert into public.member(id,name,password,singal)\ 27 values(3,'member2','password2','signal2')") 28 cursor.execute("insert into public.member(id,name,password,singal)\ 29 values(4,'member3','password3','signal3')") 30 conn.commit() 31 conn.close() 32 33 print 'insert records into public.memmber successfully' 34 35 if __name__=='__main__': 36 #connectPostgreSQL() 37 insertOperate() 38
- Select 操作:
1 import os 2 import sys 3 import psycopg2 4 5 def connectPostgreSQL(): 6 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 7 print 'connect successful!' 8 cursor=conn.cursor() 9 cursor.execute('''create table public.member( 10 id integer not null primary key, 11 name varchar(32) not null, 12 password varchar(32) not null, 13 singal varchar(128) 14 )''') 15 conn.commit() 16 conn.close() 17 print 'table public.member is created!' 18 19 def insertOperate(): 20 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 21 cursor=conn.cursor() 22 cursor.execute("insert into public.member(id,name,password,singal)\ 23 values(1,'member0','password0','signal0')") 24 cursor.execute("insert into public.member(id,name,password,singal)\ 25 values(2,'member1','password1','signal1')") 26 cursor.execute("insert into public.member(id,name,password,singal)\ 27 values(3,'member2','password2','signal2')") 28 cursor.execute("insert into public.member(id,name,password,singal)\ 29 values(4,'member3','password3','signal3')") 30 conn.commit() 31 conn.close() 32 33 print 'insert records into public.memmber successfully' 34 35 def selectOperate(): 36 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 37 cursor=conn.cursor() 38 cursor.execute("select id,name,password,singal from public.member where id>2") 39 rows=cursor.fetchall() 40 for row in rows: 41 print 'id=',row[0], ',name=',row[1],',pwd=',row[2],',singal=',row[3],'\n' 42 conn.close() 43 44 if __name__=='__main__': 45 #connectPostgreSQL() 46 #insertOperate() 47 selectOperate() 48
結果:
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操作:
1 import os 2 import sys 3 import psycopg2 4 5 def connectPostgreSQL(): 6 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 7 print 'connect successful!' 8 cursor=conn.cursor() 9 cursor.execute('''create table public.member( 10 id integer not null primary key, 11 name varchar(32) not null, 12 password varchar(32) not null, 13 singal varchar(128) 14 )''') 15 conn.commit() 16 conn.close() 17 print 'table public.member is created!' 18 19 def insertOperate(): 20 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 21 cursor=conn.cursor() 22 cursor.execute("insert into public.member(id,name,password,singal)\ 23 values(1,'member0','password0','signal0')") 24 cursor.execute("insert into public.member(id,name,password,singal)\ 25 values(2,'member1','password1','signal1')") 26 cursor.execute("insert into public.member(id,name,password,singal)\ 27 values(3,'member2','password2','signal2')") 28 cursor.execute("insert into public.member(id,name,password,singal)\ 29 values(4,'member3','password3','signal3')") 30 conn.commit() 31 conn.close() 32 33 print 'insert records into public.memmber successfully' 34 35 def selectOperate(): 36 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 37 cursor=conn.cursor() 38 cursor.execute("select id,name,password,singal from public.member where id>2") 39 rows=cursor.fetchall() 40 for row in rows: 41 print 'id=',row[0], ',name=',row[1],',pwd=',row[2],',singal=',row[3],'\n' 42 conn.close() 43 44 def updateOperate(): 45 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 46 cursor=conn.cursor() 47 cursor.execute("update public.member set name='update ...' where id=2") 48 conn.commit() 49 print "Total number of rows updated :", cursor.rowcount 50 51 cursor.execute("select id,name,password,singal from public.member") 52 rows=cursor.fetchall() 53 for row in rows: 54 print 'id=',row[0], ',name=',row[1],',pwd=',row[2],',singal=',row[3],'\n' 55 conn.close() 56 57 if __name__=='__main__': 58 #connectPostgreSQL() 59 #insertOperate() 60 #selectOperate() 61 updateOperate()
結果:
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 ========== Total number of rows updated : 1 id= 1 ,name= member0 ,pwd= password0 ,singal= signal0 id= 3 ,name= member2 ,pwd= password2 ,singal= signal2 id= 4 ,name= member3 ,pwd= password3 ,singal= signal3 id= 2 ,name= update ... ,pwd= password1 ,singal= signal1 >>>
- Delete操作:
1 import os 2 import sys 3 import psycopg2 4 5 def connectPostgreSQL(): 6 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 7 print 'connect successful!' 8 cursor=conn.cursor() 9 cursor.execute('''create table public.member( 10 id integer not null primary key, 11 name varchar(32) not null, 12 password varchar(32) not null, 13 singal varchar(128) 14 )''') 15 conn.commit() 16 conn.close() 17 print 'table public.member is created!' 18 19 def insertOperate(): 20 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 21 cursor=conn.cursor() 22 cursor.execute("insert into public.member(id,name,password,singal)\ 23 values(1,'member0','password0','signal0')") 24 cursor.execute("insert into public.member(id,name,password,singal)\ 25 values(2,'member1','password1','signal1')") 26 cursor.execute("insert into public.member(id,name,password,singal)\ 27 values(3,'member2','password2','signal2')") 28 cursor.execute("insert into public.member(id,name,password,singal)\ 29 values(4,'member3','password3','signal3')") 30 conn.commit() 31 conn.close() 32 33 print 'insert records into public.memmber successfully' 34 35 def selectOperate(): 36 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 37 cursor=conn.cursor() 38 cursor.execute("select id,name,password,singal from public.member where id>2") 39 rows=cursor.fetchall() 40 for row in rows: 41 print 'id=',row[0], ',name=',row[1],',pwd=',row[2],',singal=',row[3],'\n' 42 conn.close() 43 44 def updateOperate(): 45 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 46 cursor=conn.cursor() 47 cursor.execute("update public.member set name='update ...' where id=2") 48 conn.commit() 49 print "Total number of rows updated :", cursor.rowcount 50 51 cursor.execute("select id,name,password,singal from public.member") 52 rows=cursor.fetchall() 53 for row in rows: 54 print 'id=',row[0], ',name=',row[1],',pwd=',row[2],',singal=',row[3],'\n' 55 conn.close() 56 57 def deleteOperate(): 58 conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432") 59 cursor=conn.cursor() 60 61 cursor.execute("select id,name,password,singal from public.member") 62 rows=cursor.fetchall() 63 for row in rows: 64 print 'id=',row[0], ',name=',row[1],',pwd=',row[2],',singal=',row[3],'\n' 65 66 print 'begin delete' 67 cursor.execute("delete from public.member where id=2") 68 conn.commit() 69 print 'end delete' 70 print "Total number of rows deleted :", cursor.rowcount 71 72 cursor.execute("select id,name,password,singal from public.member") 73 rows=cursor.fetchall() 74 for row in rows: 75 print 'id=',row[0], ',name=',row[1],',pwd=',row[2],',singal=',row[3],'\n' 76 conn.close() 77 78 if __name__=='__main__': 79 #connectPostgreSQL() 80 #insertOperate() 81 #selectOperate() 82 #updateOperate() 83 deleteOperate()
結果:
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= 1 ,name= member0 ,pwd= password0 ,singal= signal0 id= 3 ,name= member2 ,pwd= password2 ,singal= signal2 id= 4 ,name= member3 ,pwd= password3 ,singal= signal3 id= 2 ,name= update ... ,pwd= password1 ,singal= signal1 begin delete end delete Total number of rows deleted : 1 id= 1 ,name= member0 ,pwd= password0 ,singal= signal0 id= 3 ,name= member2 ,pwd= password2 ,singal= signal2 id= 4 ,name= member3 ,pwd= password3 ,singal= signal3 >>>
參考文章:
http://www.cnblogs.com/qiongmiaoer/archive/2013/09/30/3346984.html
http://www.yiibai.com/html/postgresql/2013/080998.html