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中numpy基础学习及进行数组和矢量计算
Feb 12 Python
理论讲解python多进程并发编程
Feb 09 Python
python TCP Socket的粘包和分包的处理详解
Feb 09 Python
python web.py开发httpserver解决跨域问题实例解析
Feb 12 Python
关于Python正则表达式 findall函数问题详解
Mar 22 Python
python二维列表一维列表的互相转换实例
Jul 02 Python
Python logging模块用法示例
Aug 28 Python
pandas进行时间数据的转换和计算时间差并提取年月日
Jul 06 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
Dec 25 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
Jan 25 Python
python实现简单的购物程序代码实例
Mar 03 Python
Python中文分词库jieba(结巴分词)详细使用介绍
Apr 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树的代码,可以嵌套任意层
2006/10/09 PHP
一个自定义位数的php多用户计数器代码
2007/03/11 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
Javascript Global对象
2009/08/13 Javascript
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
基于jquery的关于动态创建DOM元素的问题
2010/12/24 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
JS实现div居中示例
2014/04/17 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
JS实现窗口加载时模拟鼠标移动的方法
2015/06/03 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
2016/05/27 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
Python3基础之条件与循环控制实例解析
2014/08/13 Python
分享一个常用的Python模拟登陆类
2015/03/29 Python
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
python去除字符串中的换行符
2017/10/11 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
2019/05/27 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
Python流程控制 if else实现解析
2019/09/02 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
Python colormap库的安装和使用详情
2020/10/06 Python
Penhaligon’s英国官网:成立于1870年的英国香水制造商
2021/02/18 全球购物
员工工作表扬信范文
2014/01/13 职场文书
社会发展项目建议书
2014/08/25 职场文书
户籍证明格式
2014/09/15 职场文书
2015学校年度工作总结
2015/05/11 职场文书
金陵十三钗观后感
2015/06/04 职场文书