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基础之I/O模型
May 11 Python
python实现闹钟定时播放音乐功能
Jan 25 Python
python调试神器PySnooper的使用
Jul 03 Python
python中自带的三个装饰器的实现
Nov 08 Python
django 中使用DateTime常用的时间查询方式
Dec 03 Python
Python concurrent.futures模块使用实例
Dec 24 Python
Python3 把一个列表按指定数目分成多个列表的方式
Dec 25 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
Python unittest框架操作实例解析
Apr 13 Python
Pythonic版二分查找实现过程原理解析
Aug 11 Python
python实现网络五子棋
Apr 11 Python
教你如何使用Python Tkinter库制作记事本
Jun 10 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
使用TinyButStrong模板引擎来做WEB开发
2007/03/16 PHP
初学CAKEPHP 基础教程
2009/11/02 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
javascript面向对象之Javascript 继承
2010/05/04 Javascript
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
nodeJs实现基于连接池连接mysql的方法示例
2018/02/10 NodeJs
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
使用Python生成url短链接的方法
2015/05/04 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
mac使用python识别图形验证码功能
2020/01/10 Python
浅析Python迭代器的高级用法
2020/07/16 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
简述DNS进行域名解析的过程
2013/12/02 面试题
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
大学生个人自我鉴定
2013/12/03 职场文书
班组长安全职责
2014/01/05 职场文书
岗位竞聘演讲稿
2014/01/10 职场文书
市场营销职业生涯规划书范文
2014/01/12 职场文书
供货协议书范本
2014/04/22 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书