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 相关文章推荐
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
python文件名和文件路径操作实例
Sep 29 Python
python分析作业提交情况
Nov 22 Python
使用python将图片格式转换为ico格式的示例
Oct 22 Python
使用pycharm设置控制台不换行的操作方法
Jan 19 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
python Kmeans算法原理深入解析
Aug 23 Python
python中下标和切片的使用方法解析
Aug 27 Python
pytorch实现mnist数据集的图像可视化及保存
Jan 14 Python
详解Python实现进度条的4种方式
Jan 15 Python
python产生模拟数据faker库的使用详解
Nov 04 Python
解决pytorch 的state_dict()拷贝问题
Mar 03 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常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
2017/02/07 PHP
js直接编辑当前cookie的脚本
2008/09/14 Javascript
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
JavaScript实现的日期控件具体代码
2013/11/18 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
node.js中的http.response.end方法使用说明
2014/12/14 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
基于JS代码实现导航条弹出式悬浮菜单
2016/06/17 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
详解Axios 如何取消已发送的请求
2018/10/20 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
vue中axios的二次封装实例讲解
2019/10/14 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
[06:45]2018DOTA2亚洲邀请赛 4.5 SOLO赛 Sccc vs Maybe
2018/04/06 DOTA
Python set集合类型操作总结
2014/11/07 Python
python中requests小技巧
2017/05/10 Python
Python切片工具pillow用法示例
2018/03/30 Python
Python中一行和多行import模块问题
2018/04/01 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
python 字段拆分详解
2019/12/17 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
python能做哪些生活有趣的事情
2020/09/09 Python
北京华建集团SQL面试题
2014/06/03 面试题
2014年公司迎新年活动方案
2014/02/24 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL