Python:使用psycopg2模块操作PostgreSQL

安装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



感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接
posted @   cctext  阅读(67312)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示