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代码使其加快作用域内的查找
Mar 30 Python
Django中URLconf和include()的协同工作方法
Jul 20 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
Python装饰器原理与用法分析
Apr 30 Python
Jupyter notebook远程访问服务器的方法
May 24 Python
python list转矩阵的实例讲解
Aug 04 Python
24式加速你的Python(小结)
Jun 13 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
Dec 11 Python
Python networkx包的实现
Feb 14 Python
Python小白不正确的使用类变量实例
May 29 Python
Python 远程开关机的方法
Nov 18 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 addslashes和mysql_real_escape_string
2010/01/24 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
Yii快速入门经典教程
2015/12/28 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
你必须知道的Javascript知识点之"深入理解作用域链"的介绍
2013/04/23 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
2016/12/07 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
[04:45]DOTA2上海特级锦标赛主赛事第四日RECAP
2016/03/06 DOTA
python中urllib模块用法实例详解
2014/11/19 Python
python实现Zabbix-API监控
2018/09/17 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
毕业证丢失证明
2014/01/15 职场文书
校园演讲稿汇总
2014/05/21 职场文书
小学生植树节活动总结
2014/07/04 职场文书
2014乡镇领导班子四风对照检查材料思想汇报
2014/10/05 职场文书
企业战略合作意向书
2015/05/08 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
工程主管竞聘书
2015/09/15 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript