python连接PostgreSQL过程解析


Posted in Python onFebruary 09, 2020

这篇文章主要介绍了python连接PostgreSQL过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1. 常用模块

# 连接数据库

connect()函数创建一个新的数据库连接对话并返回一个新的连接实例对象

PG_CONF_123 = {
  'user':'emma',
  'port':123,
  'host':'192.168.1.123',
  'password':'emma',
  'database':'dbname'}
conn = psycopg2.connect(**PG_CONF_123)

# 打开一个操作整个数据库的光标

连接对象可以创建光标用来执行SQL语句

cur = conn.cursor()

# 执行一个创建表的SQL语句

光标可以使用execute()和executemany()函数

cur.execute("CREATE TABLE test (id serial PRIMARY KEY, num integer, data varchar);")

# 传递参数给插入语句

cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)",(100, "abc'def"))

# 执行查询语句并将获取到的数据作为python对象

cur.execute("SELECT * FROM test;")
cur.fetchone()
(1, 100, "abc'def")

# 提交修改

如果只使用查询语句不用commit方法,insert/update/delete等操作需要调用commit()。rollback()函数用于会滚到上次调用commit()方法之后。

conn.commit()

# 关闭数据库连接

cur.close()
conn.close()

2. 防范SQL注入漏洞

典型的SQL注入漏洞形式:

SQL = "select * from userinfo where id = '%s'" % (id)

SQL = "select * from userinfo where id = '{}'".format(id)

如果有人恶意攻击,在传入参数的代码中加入恶意代码,如:

request.id = '123; drop tabel userid;'

会造成严重风险,为防止此问题,应该通过第二位变量传入参数的方法:%s(无论变量是什么数据类型,都使用%s)

SQL = "INSERT INTO authors (name) VALUES (%s);" # Note: no quotes
data = ("O'Reilly", )
cur.execute(SQL, data) # Note: no % operator

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的Tornado框架实现图片上传及图片大小修改功能
Jun 30 Python
Python Queue模块详细介绍及实例
Dec 27 Python
Python+OpenCV让电脑帮你玩微信跳一跳
Jan 04 Python
Python数据处理numpy.median的实例讲解
Apr 02 Python
Python实现的维尼吉亚密码算法示例
Apr 12 Python
使用python根据端口号关闭进程的方法
Nov 06 Python
基于Python的ModbusTCP客户端实现详解
Jul 13 Python
Python下应用opencv 实现人脸检测功能
Oct 24 Python
Python操作多维数组输出和矩阵运算示例
Nov 28 Python
Python 实现自动获取种子磁力链接方式
Jan 16 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
Jun 14 Python
Python 虚拟环境工作原理解析
Dec 24 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
Feb 09 #Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
Feb 09 #Python
python 爬取疫情数据的源码
Feb 09 #Python
python代码如何实现余弦相似性计算
Feb 09 #Python
python字符串替换re.sub()实例解析
Feb 09 #Python
Python随机数函数代码实例解析
Feb 09 #Python
Python如何访问字符串中的值
Feb 09 #Python
You might like
PHP中10个不常见却非常有用的函数
2010/03/21 PHP
php 地区分类排序算法
2013/07/01 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
浅析Prototype的模板类 Template
2011/12/07 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
JS和JQuery实现雪花飘落效果
2017/11/30 jQuery
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
详解angularjs跨页面传参遇到的一些问题
2018/11/01 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
JavaScript中的全局属性与方法深入解析
2020/06/14 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
解决vuex刷新数据消失问题
2020/11/12 Javascript
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
浅谈python jieba分词模块的基本用法
2017/11/09 Python
深入浅析python 中的匿名函数
2018/05/21 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
python sorted方法和列表使用解析
2019/11/18 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
2015/01/01 HTML / CSS
MADE法国:提供原创设计师家具
2018/09/18 全球购物
Martinelli官方商店:西班牙皮鞋和高跟鞋品牌
2019/07/30 全球购物
迎新晚会邀请函
2014/02/01 职场文书
网站美工岗位职责
2014/04/02 职场文书
助残日活动总结
2014/08/27 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript