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 字符串中的字符倒转
Sep 06 Python
wxPython学习之主框架实例
Sep 28 Python
关于Python元祖,列表,字典,集合的比较
Jan 06 Python
Python实现matplotlib显示中文的方法详解
Feb 06 Python
Python中作用域的深入讲解
Dec 10 Python
python3.6使用tkinter实现弹跳小球游戏
May 09 Python
Ubuntu下Anaconda和Pycharm配置方法详解
Jun 14 Python
详解从Django Allauth中进行登录改造小结
Dec 18 Python
Django 路由层URLconf的实现
Dec 30 Python
Python实现i人事自动打卡的示例代码
Jan 09 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
Jan 10 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 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进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
2012/06/14 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
微信开发 消息推送实现代码
2016/10/21 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
JS实现上传图片实时预览功能
2017/05/22 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
JS实现百度网盘任意文件强制下载功能
2018/08/31 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
python 实现归并排序算法
2012/06/05 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
python实现教务管理系统
2018/03/12 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
django序列化时使用外键的真实值操作
2020/07/15 Python
什么是Python包的循环导入
2020/09/08 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
三爱活动实施方案
2014/03/19 职场文书
行政专员求职信范文
2014/05/03 职场文书
2014年仓库保管员工作总结
2014/12/03 职场文书
党支部培养考察意见
2015/06/02 职场文书
幼儿园见习总结
2015/06/23 职场文书
环保宣传语大全
2015/07/13 职场文书
2015中秋祝酒词
2015/08/12 职场文书
Python爬虫实战之爬取京东商品数据并实实现数据可视化
2021/06/07 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python