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批量按比例缩小图片脚本分享
May 21 Python
Python实现的简单算术游戏实例
May 26 Python
python自动翻译实现方法
May 28 Python
基于numpy.random.randn()与rand()的区别详解
Apr 17 Python
python实现人民币大写转换
Jun 20 Python
使用python将图片格式转换为ico格式的示例
Oct 22 Python
python并发和异步编程实例
Nov 15 Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 Python
python实现根据文件格式分类
Oct 31 Python
使用Python的networkx绘制精美网络图教程
Nov 21 Python
pandas-resample按时间聚合实例
Dec 27 Python
将自己的数据集制作成TFRecord格式教程
Feb 17 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
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
2016/07/18 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
php获取flash尺寸详细数据的方法
2016/11/12 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
[01:20:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第四场 8.26
2018/08/30 DOTA
利用Python循环(包括while&for)各种打印九九乘法表的实例
2017/11/06 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
Django中的AutoField字段使用
2020/05/18 Python
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
生态学毕业生自荐信
2013/10/27 职场文书
管道维修工岗位职责
2013/12/27 职场文书
精彩自我鉴定
2014/01/16 职场文书
行政专员的岗位职责
2014/03/10 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
导游词怎么写
2015/02/04 职场文书
2015年社区妇联工作总结
2015/04/21 职场文书
文明礼仪倡议书
2015/04/28 职场文书
沂蒙六姐妹观后感
2015/06/08 职场文书
idea以任意顺序debug多线程程序的具体用法
2021/08/30 Java/Android
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js