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中编写数据库模块的教程
Apr 29 Python
Python实现队列的方法
May 26 Python
Python常用内置模块之xml模块(详解)
May 23 Python
django使用xlwt导出excel文件实例代码
Feb 06 Python
Python 获取中文字拼音首个字母的方法
Nov 28 Python
PyQt5根据控件Id获取控件对象的方法
Jun 25 Python
简单了解Python生成器是什么
Jul 02 Python
30秒学会30个超实用Python代码片段【收藏版】
Oct 15 Python
selenium+Chrome滑动验证码破解二(某某网站)
Dec 17 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
Jan 10 Python
Python实现猜年龄游戏代码实例
Mar 25 Python
Pycharm生成可执行文件.exe的实现方法
Jun 02 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序列号生成函数和字符串替换函数代码
2012/06/07 PHP
3种php生成唯一id的方法
2015/11/23 PHP
PHP生成图片验证码功能示例
2017/01/12 PHP
js验证表单第二部分
2006/11/25 Javascript
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
JS 自定义带默认值的函数
2011/07/21 Javascript
JS控制阿拉伯数字转为中文大写示例代码
2013/09/04 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
JS+CSS实现简单滑动门(滑动菜单)效果
2015/09/19 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
vue实现带过渡效果的下拉菜单功能
2020/02/19 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
使用Python的内建模块collections的教程
2015/04/28 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
小学新教师培训方案
2014/02/03 职场文书
中班开学寄语
2014/04/04 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
房产公证书范本
2014/04/10 职场文书
应届硕士毕业生自荐信
2014/05/26 职场文书
维稳承诺书
2015/01/20 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
教你使用TensorFlow2识别验证码
2021/06/11 Python
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL