Python 操作 PostgreSQL 数据库示例【连接、增删改查等】


Posted in Python onApril 21, 2020

本文实例讲述了Python 操作 PostgreSQL 数据库。分享给大家供大家参考,具体如下:

我使用的是 Python 3.7.0

PostgreSQL可以使用psycopg2模块与Python集成。

sycopg2是用于Python编程语言的PostgreSQL数据库适配器。

psycopg2是非常小,快速,稳定的。 您不需要单独安装此模块,因为默认情况下它会随着Python 2.5.x版本一起发布。

pip3 install python-psycopg2
pip3 install psycopg2-binary

连接到数据库

以下Python代码显示了如何连接到现有的数据库。 如果数据库不存在,那么它将自动创建,最后将返回一个数据库对象。

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")

print("Opened database successfully")

在这里指定使用testdb作为数据库名称,如果数据库已成功打开连接,则会提供以下消息:

Open database successfully

创建表

以下Python程序将用于在先前创建的数据库(testdb)中创建一个表:

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")
print("Opened database successfully")

cur = conn.cursor()
cur.execute('''CREATE TABLE COMPANY
    (ID INT PRIMARY KEY   NOT NULL,
    NAME      TEXT  NOT NULL,
    AGE      INT   NOT NULL,
    ADDRESS    CHAR(50),
    SALARY     REAL);''')
print "Table created successfully"

conn.commit()
conn.close()

当执行上述程序时,它将在数据库testdb中创建COMPANY表,并显示以下消息:

Opened database successfully
Table created successfully

插入操作

以下Python程序显示了如何在上述示例中创建的COMPANY表中创建记录:

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")
print("Opened database successfully")

cur = conn.cursor()

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
   VALUES (1, 'Paul', 32, 'California', 20000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
   VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
   VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
   VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");

conn.commit()
print("Records created successfully");
conn.close()

当执行上述程序时,它将在COMPANY表中创建/插入给定的记录,并显示以下两行:

Opened database successfully
Records created successfully

SELECT操作

以下 Python 程序显示了如何从上述示例中创建的 COMPANY 表中获取和显示记录:

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")
print("Opened database successfully")

cur = conn.cursor()

cur.execute("SELECT id, name, address, salary from COMPANY")
rows = cur.fetchall()
for row in rows:
  print("ID = ", row[0])
  print("NAME = ", row[1])
  print("ADDRESS = ", row[2])
  print("SALARY = ", row[3], "\n")

print("Operation done successfully");
conn.close()

执行上述程序时,会产生以下结果:

Opened database successfully
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  20000.0

ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully

更新操作

以下 Python 代码显示了如何使用UPDATE语句来更新任何记录,然后从COMPANY表中获取并显示更新的记录:

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")
print("Opened database successfully")

cur = conn.cursor()

cur.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
conn.commit
print("Total number of rows updated :", cur.rowcount)

cur.execute("SELECT id, name, address, salary from COMPANY")
rows = cur.fetchall()
for row in rows:
  print("ID = ", row[0])
  print("NAME = ", row[1])
  print("ADDRESS = ", row[2])
  print("SALARY = ", row[3], "\n")

print("Operation done successfully");
conn.close()

Python

执行上述程序时,会产生以下结果:

Opened database successfully
Total number of rows updated : 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  25000.0

ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully

删除操作

以下 Python 代码显示了如何使用 DELETE 语句来删除记录,然后从 COMPANY 表中获取并显示剩余的记录:

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")
print("Opened database successfully")

cur = conn.cursor()

cur.execute("DELETE from COMPANY where ID=2;")
conn.commit
print("Total number of rows deleted :", cur.rowcount)

cur.execute("SELECT id, name, address, salary from COMPANY")
rows = cur.fetchall()
for row in rows:
  print("ID = ", row[0])
  print("NAME = ", row[1])
  print("ADDRESS = ", row[2])
  print("SALARY = ", row[3], "\n")

print("Operation done successfully");
conn.close()

执行上述程序时,会产生以下结果:

Opened database successfully
Total number of rows deleted : 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  20000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
小结Python用fork来创建子进程注意事项
Jul 03 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
怎样使用Python脚本日志功能
Aug 14 Python
python用pickle模块实现“增删改查”的简易功能
Jun 07 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
Jan 29 Python
详解Python3除法之真除法、截断除法和下取整对比
May 23 Python
python django 原生sql 获取数据的例子
Aug 14 Python
在python tkinter界面中添加按钮的实例
Mar 04 Python
Django-silk性能测试工具安装及使用解析
Nov 28 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
Jan 12 Python
PyCharm 解决找不到新打开项目的窗口问题
Jan 15 Python
Django实现celery定时任务过程解析
Apr 21 #Python
使用PyQt5实现图片查看器的示例代码
Apr 21 #Python
快速解决jupyter notebook启动需要密码的问题
Apr 21 #Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 #Python
Django基于客户端下载文件实现方法
Apr 21 #Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
Apr 21 #Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
Apr 20 #Python
You might like
基于mysql的bbs设计(一)
2006/10/09 PHP
PHP5中新增stdClass 内部保留类
2011/06/13 PHP
php中将一个对象保存到Session中的方法
2015/03/13 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
extJs 下拉框联动实现代码
2010/04/09 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
2015/10/29 Javascript
学习Angular中作用域需要注意的坑
2016/08/17 Javascript
JavaScript实现垂直向上无缝滚动特效代码
2016/11/23 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
jQuery基于Ajax实现读取XML数据功能示例
2018/05/31 jQuery
Vuex的初探与实战小结
2018/11/26 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
vue中使用vue-print.js实现多页打印
2020/03/05 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
phpsir 开发 一个检测百度关键字网站排名的python 程序
2009/09/17 Python
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
python 编写简单网页服务器的实例
2018/06/01 Python
python实现学员管理系统
2019/02/26 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
公司员工检讨书
2014/02/08 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
外出听课学习心得体会
2016/01/15 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书