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中isnumeric()方法的使用简介
May 19 Python
Python 模拟员工信息数据库操作的实例
Oct 23 Python
TensorFlow深度学习之卷积神经网络CNN
Mar 09 Python
python实现扫描日志关键字的示例
Apr 28 Python
Python中的Django基本命令实例详解
Jul 15 Python
Python线程同步的实现代码
Oct 03 Python
对YOLOv3模型调用时候的python接口详解
Aug 26 Python
Python 元组操作总结
Sep 18 Python
Pytorch中Tensor与各种图像格式的相互转化详解
Dec 26 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
python爬取代理IP并进行有效的IP测试实现
Oct 09 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
用libTemplate实现静态网页的生成
2006/10/09 PHP
PHP 字符串 小常识
2009/06/05 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
浅谈JavaScript对象与继承
2016/07/10 Javascript
jQuery查找节点方法完整实例
2016/09/13 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
如何判断出一个js对象是否一个dom对象
2016/11/24 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
Vue使用NProgress的操作过程解析
2019/10/10 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
Python入门之三角函数atan2()函数详解
2017/11/08 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
python组合无重复三位数的实例
2018/11/13 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
python获取Pandas列名的几种方法
2019/08/07 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
一款纯css3实现简单的checkbox复选框和radio单选框
2014/11/05 HTML / CSS
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
Linux常见面试题
2016/10/04 面试题
《特殊的葬礼》教学反思
2014/04/27 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
继承权公证书范本
2015/01/23 职场文书
神龙架导游词
2015/02/11 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书