Python操作PostgreSql数据库的方法(基本的增删改查)


Posted in Python onDecember 29, 2020

Python操作PostgreSql数据库(基本的增删改查)

操作数据库最快的方式当然是直接用使用SQL语言直接对数据库进行操作,但是偶尔我们也会碰到在代码中操作数据库的情况,我们可能用ORM类的库对数控库进行操作,但是当需要操作大量的数据时,ORM的数据显的太慢了。在python中,遇到这样的情况,我推荐使用psycopg2操作postgresql数据库

psycopg2

官方文档传送门: http://initd.org/psycopg/docs/index.html

简单的增删改查

连接

连接pg并创建表

PG_SQL_LOCAL = {
 'database': 'postgres',
 'user': 'postgres',
 'password': "8dsa581",
 # 'host':'10.27.78.1',
 'host': 'localhost'
}

def connectPostgreSQL():
 conn = psycopg2.connect(**PG_SQL_LOCAL)
 print('connect successful!')
 cursor = conn.cursor()
 cursor.execute('''
 create table public.members(
 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!')

一条一条的增加数据

def insertOperate():
 conn = psycopg2.connect(**PG_SQL_LOCAL)
 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,name,password,singal)\
values(2,'member1','password1','signal1')")
 cursor.execute("insert into public.member(id,name,password,singal)\
values(3,'member2','password2','signal2')")
 cursor.execute("insert into public.member(id,name,password,singal)\
values(4,'member3','password3','signal3')")
 row = conn.fetchone()
 print(row)
 conn.commit()
 conn.close()

 print('insert records into public.memmber successfully')

  • fetchall() 一次性获取所有数据
  • fetchmany() 一次值提取2000条数据(使用服务端的游标)
def selectOperate():
 conn = psycopg2.connect(**PG_SQL_LOCAL)
 cursor = conn.cursor()
 cursor.execute("select id,name,password,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],)

 while True:
 rows = cursor.fetchmany(2000)
 if not rows:
  break
 for row in rows:
  # print('id=', row['id'], ',name=', row['name'], ',pwd=', row['pwd'], ',singal=', row['singal'],)
  rid,name,pwd,singal = row
  print(rid,name,pwd,singal)
  # print('id=', row[0], ',name=', row[1], ',pwd=', row[2], ',singal=', row[3], )
 conn.close()

更新数据

def updateOperate():
 conn = psycopg2.connect(**PG_SQL_LOCAL)
 cursor=conn.cursor()
 result = cursor.execute("update public.member set name='member X' where id=3")
 print(result)
 conn.commit()
 print("Total number of rows updated :", cursor.rowcount)

 cursor.execute("select id,name,password,singal from public.member")
 rows=cursor.fetchall()
 for row in rows:
 print('id=',row[0], ',name=',row[1],',pwd=',row[2],',singal=',row[3],'\n')
 conn.close()

删除数据

def deleteOperate():
 conn = psycopg2.connect(**PG_SQL_LOCAL)
 cursor = conn.cursor()

 cursor.execute("select id,name,password,singal from public.member")
 rows = cursor.fetchall()
 for row in rows:
 print('id=', row[0], ',name=', row[1], ',pwd=', row[2], ',singal=', row[3], '\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,name,password,singal from public.member")
 rows = cursor.fetchall()
 for row in rows:
 print('id=', row[0], ',name=', row[1], ',pwd=', row[2], ',singal=', row[3], '\n')
 conn.close()

补充,增加的字段带有时间格式

带有时间格式是,只需要传入时间格式的字符串(‘2017-05-27')即可,PG会自动识别

cur.execute("INSERT INTO Employee "
  "VALUES('Gopher', 'China Beijing', 100, '2017-05-27')")
# 查询数据
cur.execute("SELECT * FROM Employee")
rows = cur.fetchall()
for row in rows:
 print('name=' + str(row[0]) + ' address=' + str(row[1]) +
  ' age=' + str(row[2]) + ' date=' + str(row[3]), type(row[3]))

 # 插入数据
 sql = """INSERT INTO Employees VALUES(%s, %s, %s,%s) """
 var = []
 var.append([row[0], row[1], row[2], row[3]])
 cur.executemany(sql, var)

# 提交事务
conn.commit()

# 关闭连接
conn.close()

到此这篇关于Python操作PostgreSql数据库(基本的增删改查)的文章就介绍到这了,更多相关Python操作PostgreSql数据库内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
整理Python 常用string函数(收藏)
May 30 Python
python梯度下降法的简单示例
Aug 31 Python
Python从Excel中读取日期一列的方法
Nov 28 Python
分享Python切分字符串的一个不错方法
Dec 14 Python
解决python xlrd无法读取excel文件的问题
Dec 25 Python
Python 函数list&read&seek详解
Aug 28 Python
Pytorch自己加载单通道图片用作数据集训练的实例
Jan 18 Python
python3.6连接mysql数据库及增删改查操作详解
Feb 10 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
Apr 20 Python
pyinstaller将含有多个py文件的python程序做成exe
Apr 29 Python
python实现npy格式文件转换为txt文件操作
Jul 01 Python
利用Python判断整数是否是回文数的3种方法总结
Jul 07 Python
python中uuid模块实例浅析
Dec 29 #Python
python中pickle模块浅析
Dec 29 #Python
vue.js刷新当前页面的实例讲解
Dec 29 #Python
Python实现对word文档添加密码去除密码的示例代码
Dec 29 #Python
利于python脚本编写可视化nmap和masscan的方法
Dec 29 #Python
Python基于mediainfo批量重命名图片文件
Dec 29 #Python
用python批量下载apk
Dec 29 #Python
You might like
PHP函数spl_autoload_register()用法和__autoload()介绍
2012/02/04 PHP
关于PHP转换超过2038年日期出错的问题解决
2017/06/28 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
js下用层来实现select的title提示属性
2010/02/23 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
javascript的push使用指南
2014/12/05 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
vue基于Vue2.0和高德地图的地图组件实例
2017/04/28 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
[01:06:39]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第三局
2016/03/02 DOTA
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
跟老齐学Python之数据类型总结
2014/09/24 Python
Python使用Flask框架获取当前查询参数的方法
2015/03/21 Python
python获取当前计算机cpu数量的方法
2015/04/18 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
python二维键值数组生成转json的例子
2019/12/06 Python
python实现tail -f 功能
2020/01/17 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
HTML5应用之文件上传
2016/12/30 HTML / CSS
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
亲属关系公证书
2014/04/08 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
竞选大学学委演讲稿
2014/09/13 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
高一作文之暖冬
2019/11/09 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
Dashboard管理Kubernetes集群与API访问配置
2022/04/01 Servers
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js