python连接PostgreSQL数据库的过程详解


Posted in Python onSeptember 18, 2019

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 相关文章推荐
win7安装python生成随机数代码分享
Dec 27 Python
python用来获得图片exif信息的库实例分析
Mar 16 Python
详解 Python中LEGB和闭包及装饰器
Aug 03 Python
python机器学习案例教程——K最近邻算法的实现
Dec 28 Python
Python 查看list中是否含有某元素的方法
Jun 27 Python
Python对接六大主流数据库(只需三步)
Jul 31 Python
Django上使用数据可视化利器Bokeh解析
Jul 31 Python
详解Python绘图Turtle库
Oct 12 Python
python模块hashlib(加密服务)知识点讲解
Nov 25 Python
Python列表list操作相关知识小结
Jan 29 Python
Pycharm github配置实现过程图解
Oct 13 Python
Python趣味挑战之实现简易版音乐播放器
May 28 Python
Python传递参数的多种方式(小结)
Sep 18 #Python
余弦相似性计算及python代码实现过程解析
Sep 18 #Python
python之yield和Generator深入解析
Sep 18 #Python
PyTorch预训练的实现
Sep 18 #Python
用python实现英文字母和相应序数转换的方法
Sep 18 #Python
Django模板导入母版继承和自定义返回Html片段过程解析
Sep 18 #Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
Sep 18 #Python
You might like
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
PHP获取音频文件的相关信息
2015/06/22 PHP
PHP 微信支付类 demo
2015/11/30 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
JQuery toggle使用分析
2009/11/16 Javascript
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
js格式化时间小结
2014/11/03 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
2019/04/18 Javascript
[03:11]2014DOTA2国际邀请赛-VG掉入败者组 独家专访357
2014/07/19 DOTA
python实现爬取千万淘宝商品的方法
2015/06/30 Python
详解Python 正则表达式模块
2018/11/05 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
2019/12/27 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
Python解析微信dat文件的方法
2020/11/30 Python
深入浅出CSS3 background-clip,background-origin和border-image教程
2011/01/27 HTML / CSS
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
MyBag中文网:英国著名的时尚包袋电商零售网站
2020/07/31 全球购物
高中生家长寄语大全
2014/04/03 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
2015年保送生自荐信
2015/03/24 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
MongoDB 常用的crud操作语句
2021/06/20 MongoDB
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技