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 类的继承实例详解
Mar 25 Python
Python模拟简单电梯调度算法示例
Aug 20 Python
Python SMTP发送邮件遇到的一些问题及解决办法
Oct 24 Python
python实现月食效果实例代码
Jun 18 Python
python利用re,bs4,requests模块获取股票数据
Jul 29 Python
Mac安装python3的方法步骤
Aug 09 Python
详解Python3 pandas.merge用法
Sep 05 Python
python 实现检验33品种数据是否是正态分布
Dec 09 Python
Python3.9又更新了:dict内置新功能
Feb 28 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
Apr 08 Python
python argparse模块通过后台传递参数实例
Apr 20 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
Jun 21 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生成QRcode实例
2014/09/22 PHP
PHP内存使用情况如何获取
2015/10/10 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
在网页里看flash的trace数据的js类
2009/01/10 Javascript
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
js 表格隔行颜色
2009/12/02 Javascript
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
浅析JavaScript基本类型与引用类型
2014/05/28 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
详解ESLint在Vue中的使用小结
2018/10/15 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
python实现SMTP邮件发送功能
2020/06/16 Python
Python使用微信SDK实现的微信支付功能示例
2017/06/30 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
django rest framework使用django-filter用法
2020/07/15 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
会计学应届毕业生推荐信
2013/11/04 职场文书
怎样写演讲稿
2014/01/04 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
简易离婚协议书范本
2014/10/24 职场文书
springboot如何初始化执行sql语句
2021/06/22 Java/Android