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基于BeautifulSoup实现抓取网页指定内容的方法
Jul 09 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
python 使用正则表达式按照多个空格分割字符的实例
Dec 20 Python
python3+pyqt5+itchat微信定时发送消息的方法
Feb 20 Python
python可视化实现KNN算法
Oct 16 Python
详解Python的三种拷贝方式
Feb 11 Python
Python telnet登陆功能实现代码
Apr 16 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
python3将变量输入的简单实例
Aug 19 Python
python操作toml文件的示例代码
Nov 27 Python
Python基础之pandas数据合并
Apr 27 Python
Python Pandas常用函数方法总结
Jun 15 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
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
php使用PDO执行SQL语句的方法分析
2017/02/16 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
二行代码解决全部网页木马
2008/03/28 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
jquery动态赋值id与动态取id方法示例
2017/08/21 jQuery
Angular5中调用第三方js插件的方法
2018/02/26 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
利用Python绘制有趣的万圣节南瓜怪效果
2019/10/31 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
2020/02/29 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
python使用建议与技巧分享(一)
2020/08/17 Python
python字典通过值反查键的实现(简洁写法)
2020/09/30 Python
英国领先的隐形眼镜在线供应商:Lenstore.co.uk
2019/11/24 全球购物
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
.NET面试题:什么是反射
2016/09/30 面试题
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
答谢会策划方案
2014/05/12 职场文书
酒店收银员岗位职责
2015/04/07 职场文书
解决Django transaction进行事务管理踩过的坑
2021/04/24 Python