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随机生成均匀分布在三角形内或者任意多边形内的点
Dec 14 Python
flask框架中勾子函数的使用详解
Aug 01 Python
Django框架用户注销功能实现方法分析
May 28 Python
使用 Python 处理 JSON 格式的数据
Jul 22 Python
python绘图模块matplotlib示例详解
Jul 26 Python
pandas read_excel()和to_excel()函数解析
Sep 19 Python
python shutil文件操作工具使用实例分析
Dec 25 Python
Python 爬取必应壁纸的实例讲解
Feb 24 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
Mar 06 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
Apr 13 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
Apr 16 Python
解决Python发送Http请求时,中文乱码的问题
Apr 30 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
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
随窗体滑动的小插件sticky源码
2013/06/21 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
javascript关于运动的各种问题经典总结
2015/04/27 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
基于JavaScript实现购物车功能
2017/02/07 Javascript
Bootstrap Table使用整理(二)
2017/06/09 Javascript
JavaScript异步上传图片文件的实例代码
2017/07/04 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
详解JavaScript中的六种错误类型
2017/09/21 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
2018/08/27 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
js实现日历
2020/11/07 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
python利用hook技术破解https的实例代码
2013/03/25 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
Python中创建二维数组
2018/10/17 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
大课间活动实施方案
2014/03/06 职场文书
党员公开承诺书
2014/03/25 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书