python psycopg2使用_Python中用psycopg2模块操作PostgreSQL方法

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

安装psycopg2模块:

怎么验证是否已经安装过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:

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

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

打开数据库连接:

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

创建表操作:

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

结果:

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

结果:

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

结果:

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

>>>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335870.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java ee7帮助文档_帮助推动Java EE向前发展

java ee7帮助文档如果您还记得我写的题为《 Java EE 8:当前状态是什么》的文章 ,很明显,Java EE的发展无疑在过去几个月中有所放缓。 肯定有一些Java EE下的JSR具有比其他JSR更多的活动,但是自JavaOne 2015以来,整个Ja…

【数论系列】集合

1.集合:我们把研究对象统称为元素,把一些元素组成的的总体叫作集合。 集合满足三个特性,即 确定性 , 无序性, 互异性 gather [1, 2, 3, 4, 5, 6] 2. 元素与集合的关系,只有(属于&#xff09…

java解码_Java数组已排序解码

java解码排序是我们在计算机科学中学习的第一个算法。 排序是一个非常有趣的领域,它有大约20多种算法,而且总是很难确定哪种算法最好。 排序算法的效率是根据占用的时间和所需的空间来衡量的。 一些时间气泡排序是最好的,因为它没有空间需求&…

it企业实习_IT公司实习报告总结

IT公司实习报告总结在IT公司进行实习是一种怎样的体验?不妨为自己做一下实习报告总结,下面为各位提供IT公司实习报告总结范文,以作参考!正式实习开始是7月8号,结束于8月7号,还满有意思,78颠倒一下.对于实习&#xff0…

【数论系列】反函数

一、判断反函数是否存在: 由反函数存在定理:严格单调函数必定有严格单调的反函数,并且二者单调性相同: 1、先判读这个函数是否为单调函数,若非单调函数,则其反函数不存在。 设yf(x)的定义域为D&#xff…

java附加属性_Java 9附加流

java附加属性Java 9即将发布! 它不仅仅是Jigsaw项目 。 (我也很惊讶。)它给平台带来了很多小的变化,我想一一看一下。 我将标记所有这些帖子,您可以在这里找到它们。 让我们从…开始 流 Streams学习了两个新技巧。 第…

envi最大似然分类_闲谈最大后验概率估计(MAP estimate)amp;极大似然估计(MLE)和机器学习中的误差分类...

上一篇文章中提到了一个有趣的实验,简单来说就是1-100中有若干个数字是“正确的”,只告诉其中一部分“正确的”数字,去猜全部“正确的”数字。为了严谨的去研究这个问题,我们需要将一些概念进行抽象。首先,把提前告知的…

各种排序算法思想

快速排序 主要思想: 主要是基于分治。(分治解读) 基本步骤: 1.确定分界点x ,常用方式q[l] q[l r >> 1] , q[r] , 左右部分未必长度相等 2.根据分界点x调整区间,使得满足小于等于x的在左边,大于等于x的在右边 3.左右两端&#xf…

ios点击大头针气泡不弹出_iOS高德地图之自定义大头针and泡泡view

啥都不说先看效果图demoIMG_0270.PNG先来说说如何自定义大头针以及点击大头针时弹出的泡泡view一 : 自定义大头针新建CustomAnnotationView 继承自MAAnnotationView添加属性重写- (id)initWithAnnotation:(id)annotation reuseIdentifier:(NSString *)reuseIdentifier重写- (BO…

数据结构【单调栈】

详细解读 至此我们可以解答最开始的疑问,单调栈的根本作用在于求得「每一个数字在原始序列中左 / 右边第一个大于 / 小于它自身的数字」,并且由于每一个数字只会入栈一次且最多出栈一次,因此总的时间复杂度为 O ( n ) 。 另外需要注意&#…

java名 java_Java Syncrhonisers

java名 java线程通信主要通过共享对字段和对象的访问来发生。 尽管这种通信方式非常高效,但它易于出现诸如线程干扰和内存一致性之类的错误。 同步是一种有助于防止此类错误的工具。 但是,同步不是免费提供的,并且在访问当前由另一个线程持有…

leetcode(二分查找算法专题)

二分模板一共有两个,分别适用于不同情况。 算法思路:假设目标值在闭区间[l, r]中, 每次将区间长度缩小一半,当l r时,我们就找到了目标值。 * 其中mid需要在while内部进行更新 * 最小R,最大L , R来加&…

html 完全复制div中的内容_LOL手游现在远非完全体,未来还有哪些端游内容会加入手游中?...

LOL手游上线已经有一段时间了,虽然绝大多数情况下LOL端游的内容被继承到了手游当中,但是仍然有一部分端游的内容尚未出现在手游之内。今天小编就带领大家来盘点一下,那些未来可能出现在手游当中的端游内容。排位赛ban选英雄机制Moba游戏排位赛…

因此,Oracle杀死了java.net

好吧,还没有……但是他们宣布要在2017年5月之前关闭java.net和 kenai。JohnK . Waters 在ADTmag的Kenai和java.net的“ Sunset”一文中接受了我的采访。 由于Oracle很少提供有关已经托管在java.net上的关键项目会发生什么的信息,因此本文中编写的大部分…

【Python科学计算系列】概率论与数理统计

计算排列数 def arrangement(n, m):if n m:return math.factorial(n)else:return math.factorial(n) / math.factorial(n - m) 计算组合数 def arrangement(n, m):return math.factorial(n) / (math.factorial(m) * math.factorial(n - m))

proc编译手册_Expect 手册 中文版

Expect 手册 中文版本文由gunman翻译,在此感谢~EXPECT(1)名字:Expect-----能与交互式程序进行“可程序化”会话的脚本语言大纲:(命令选项概述)expect [ -dDinN ] [ -c cmds ] [ -[f|b] ] cmdfile ] [ args ]概述:Expec…

光盘 机密_使用保险柜管理机密

光盘 机密您如何存储秘密? 密码,API密钥,安全令牌和机密数据属于秘密类别。 那是不应该存在的数据。 在容易猜测的位置,不得以纯文本格式提供。 实际上,不得在任何位置以明文形式存储它。 可以使用Spring Cloud Confi…

OS X下使用OpenGL做离屏渲染

本文为转载内容,原地址 有时,我们想通过GPU做一些视频、图像处理,而处理的结果不需要显示在显示器上,而是直接交给主存,这时候我们可以通过OpenGL的离屏渲染来实现。 由于我们不需要将渲染好的像素显示到屏幕上&…

jpa 循环引用_JPA中按身份引用

jpa 循环引用在上一篇文章中 ,我提到我选择通过其主键而不是类型来引用其他聚合。 在处理大型或复杂域模型时,我通常使用这种方法(也称为断开域模型)。 在本文中,让我尝试进一步解释如何在JPA中完成它。 请注意&#x…

自然辩证法小论文选题_自然辨证法论文题目

与《自然辨证法论文题目》相关的范文2010年研究生课程论文 成绩: 题目:_中西医结合的发展前景_ _ 中西医结合的发展前景 [摘要]立足于中西医结合的现状,从方法论角度,就中西医融合的时间进行了探讨.中西医结合,是在我国既有传统的中医药学,又有现代的西医药学的特定环境和条件下…