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 除法小技巧
Sep 06 Python
Python列表推导式的使用方法
Nov 21 Python
python入门前的第一课 python怎样入门
Mar 06 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
Python正则匹配判断手机号是否合法的方法
Dec 09 Python
python 实现UTC时间加减的方法
Dec 31 Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 Python
python使用for循环计算0-100的整数的和方法
Feb 01 Python
python输入错误后删除的方法
Oct 12 Python
Python values()与itervalues()的用法详解
Nov 27 Python
python matplotlib 绘图 和 dpi对应关系详解
Mar 14 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 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
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
基于jquery+thickbox仿校内登录注册框
2010/06/07 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
js实现浏览本地文件并显示扩展名的方法
2015/08/17 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
微信js-sdk界面操作接口用法示例
2016/10/12 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
jQuery Validate验证框架详解(推荐)
2016/12/17 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
实例详解Node.js 函数
2018/06/10 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
python self,cls,decorator的理解
2009/07/13 Python
Python中IPYTHON入门实例
2015/05/11 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
毕业生求职信范文
2014/06/29 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
2014年管理人员工作总结
2014/12/01 职场文书
2015中学教师个人工作总结
2015/07/22 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript