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 相关文章推荐
详解Django框架中用context来解析模板的方法
Jul 20 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
对pandas进行数据预处理的实例讲解
Apr 20 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
Oct 11 Python
Python运行不显示DOS窗口的解决方法
Oct 22 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
Python中typing模块与类型注解的使用方法
Aug 05 Python
Python爬虫之Spider类用法简单介绍
Aug 04 Python
Python 整行读取文本方法并去掉readlines换行\n操作
Sep 03 Python
Python通过fnmatch模块实现文件名匹配
Sep 30 Python
分析Python感知线程状态的解决方案之Event与信号量
Jun 16 Python
Python实现PIL图像处理库绘制国际象棋棋盘
Jul 16 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
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
header跳转和include包含问题详解
2012/09/08 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
PHP实现微信退款功能
2018/10/02 PHP
js中巧用cssText属性批量操作样式
2011/03/13 Javascript
javascripit实现密码强度检测代码分享
2013/12/12 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
jQuery基于ajax实现带动画效果无刷新柱状图投票代码
2015/08/10 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
Bootstrap模态框(Modal)实现过渡效果
2017/03/17 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
总结js函数相关知识点
2018/02/27 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
Python实现求两个csv文件交集的方法
2017/09/06 Python
numpy中的高维数组转置实例
2018/04/17 Python
python实现三维拟合的方法
2018/12/29 Python
Python计算信息熵实例
2020/06/18 Python
python中if嵌套命令实例讲解
2021/02/25 Python
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
员工薪酬福利制度
2014/01/17 职场文书
认识深刻的检讨书
2014/02/16 职场文书
幼儿发展评估方案
2014/06/11 职场文书
出生医学证明书
2014/09/15 职场文书
乒乓球比赛通知
2015/04/27 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android