Python中用psycopg2模块操作PostgreSQL方法


Posted in Python onNovember 28, 2017

其实在Python中可以用来连接PostgreSQL的模块很多,这里比较推荐psycopg2。psycopg2安装起来非常的简单(pip install psycopg2),这里主要重点介绍下如何使用。

安装psycopg2模块:

怎么验证是否已经安装过psycopy2?

Python中用psycopg2模块操作PostgreSQL方法

编写上面代码,运行看是否抛出缺少psycopg2模块。

Python中用psycopg2模块操作PostgreSQL方法

安装方法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/

Python中用psycopg2模块操作PostgreSQL方法

下载文件: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

Python中用psycopg2模块操作PostgreSQL方法

运行上边的代码,确认是否删除成功。

通过psycopg2操作数据库:

使用账户postgres,创建测试数据库testdb。

Python中用psycopg2模块操作PostgreSQL方法

参考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()

这个例程获取所有查询结果(剩余)行,返回一个列表。空行时则返回空列表。

打开数据库连接:

import os
import sys
import psycopg2
def connectPostgreSQL():
conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432")
print 'connect successful!'
if __name__=='__main__':
connectPostgreSQL()

创建表操作:

import os
import sys
import psycopg2
def connectPostgreSQL():
conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", 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", user="postgres", password="new.1234", host="127.0.0.1", 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!'
 def insertOperate():
   conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", 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,name,password,singal)\
 values(2,'member1','password1','signal1')")
   cursor.execute("insert into public.member(id,name,password,singal)\
 values(3,'member2','password2','signal2')")
   cursor.execute("insert into public.member(id,name,password,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", user="postgres", password="new.1234", host="127.0.0.1", 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!'
 
 def insertOperate():
   conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", 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,name,password,singal)\
 values(2,'member1','password1','signal1')")
   cursor.execute("insert into public.member(id,name,password,singal)\
 values(3,'member2','password2','signal2')")
   cursor.execute("insert into public.member(id,name,password,singal)\
 values(4,'member3','password3','signal3')")
   conn.commit()
   conn.close()
   
   print 'insert records into public.memmber successfully'
 
 def selectOperate():
   conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432")
   cursor=conn.cursor()
   cursor.execute("select id,name,password,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()

结果:

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", user="postgres", password="new.1234", host="127.0.0.1", 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!'
 
 def insertOperate():
   conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", 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,name,password,singal)\
 values(2,'member1','password1','signal1')")
   cursor.execute("insert into public.member(id,name,password,singal)\
 values(3,'member2','password2','signal2')")
   cursor.execute("insert into public.member(id,name,password,singal)\
 values(4,'member3','password3','signal3')")
   conn.commit()
   conn.close()
   
   print 'insert records into public.memmber successfully'
 
 def selectOperate():
   conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432")
   cursor=conn.cursor()
   cursor.execute("select id,name,password,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()
 
 def updateOperate():
   conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", 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,name,password,singal from public.member")
   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()
   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操作:

import os
 import sys
 import psycopg2
 
 def connectPostgreSQL():
   conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", 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!'
 
 def insertOperate():
   conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", 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,name,password,singal)\
 values(2,'member1','password1','signal1')")
   cursor.execute("insert into public.member(id,name,password,singal)\
 values(3,'member2','password2','signal2')")
   cursor.execute("insert into public.member(id,name,password,singal)\
 values(4,'member3','password3','signal3')")
   conn.commit()
   conn.close()
   
   print 'insert records into public.memmber successfully'
 
 def selectOperate():
   conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432")
   cursor=conn.cursor()
   cursor.execute("select id,name,password,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()
 
 def updateOperate():
   conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", 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,name,password,singal from public.member")
   rows=cursor.fetchall()
   for row in rows:
     print 'id=',row[0], ',name=',row[1],',pwd=',row[2],',singal=',row[3],'\n'
   conn.close()
 
 def deleteOperate():
   conn = psycopg2.connect(database="testdb", user="postgres", password="new.1234", host="127.0.0.1", port="5432")  
   cursor=conn.cursor()
 
   cursor.execute("select id,name,password,singal from public.member")
   rows=cursor.fetchall()
   for row in rows:
     print 'id=',row[0], ',name=',row[1],',pwd=',row[2],',singal=',row[3],'\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,name,password,singal from public.member")
   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()
   #updateOperate()
   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 

>>>

Python中用psycopg2模块操作PostgreSQL方法

Python 相关文章推荐
Python修改Excel数据的实例代码
Nov 01 Python
详解Python中的__new__、__init__、__call__三个特殊方法
Jun 02 Python
对numpy中轴与维度的理解
Apr 18 Python
python3爬取数据至mysql的方法
Jun 26 Python
详解pyenv下使用python matplotlib模块的问题解决
Nov 29 Python
python 实现UTC时间加减的方法
Dec 31 Python
利用python实现汉字转拼音的2种方法
Aug 12 Python
Tensorflow加载Vgg预训练模型操作
May 26 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 Python
Python pandas读取CSV文件的注意事项(适合新手)
Jun 20 Python
Python实现PIL图像处理库绘制国际象棋棋盘
Jul 16 Python
python 多态 协议 鸭子类型详解
Nov 27 Python
Python搜索引擎实现原理和方法
Nov 27 #Python
python输入错误密码用户锁定实现方法
Nov 27 #Python
动态规划之矩阵连乘问题Python实现方法
Nov 27 #Python
Python基于贪心算法解决背包问题示例
Nov 27 #Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 #Python
利用信号如何监控Django模型对象字段值的变化详解
Nov 27 #Python
深入理解Python中range和xrange的区别
Nov 26 #Python
You might like
极典R601SW收音机
2021/03/02 无线电
APMServ使用说明
2006/10/23 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
常用简易JavaScript函数
2009/04/09 Javascript
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
require.js的用法详解
2015/10/20 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
js实现鼠标移动到图片产生遮罩效果
2017/10/21 Javascript
js 两数组去除重复数值的实例
2017/12/06 Javascript
小程序实现列表点赞功能
2018/11/02 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
解决Vue @submit 提交后不刷新页面问题
2020/07/18 Javascript
Python的设计模式编程入门指南
2015/04/02 Python
python正则实现提取电话功能
2018/02/24 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
python之pymysql模块简单应用示例代码
2019/12/16 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
创业计划书——互联网商机
2014/01/12 职场文书
党员评议思想汇报
2014/10/08 职场文书
期中考试复习计划
2015/01/19 职场文书
初中运动会前导词
2015/07/20 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python