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结合opencv实现人脸检测与跟踪
Jun 08 Python
Python实现HTTP协议下的文件下载方法总结
Apr 20 Python
Python实现拷贝多个文件到同一目录的方法
Sep 19 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
Sep 21 Python
python实现12306抢票及自动邮件发送提醒付款功能
Mar 08 Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 Python
python同步两个文件夹下的内容
Aug 29 Python
flask框架蓝图和子域名配置详解
Jan 25 Python
Django+Django-Celery+Celery的整合实战
Jan 20 Python
ASP.NET Core中的配置详解
Feb 05 Python
python实现三阶魔方还原的示例代码
Apr 28 Python
Django+Nginx+uWSGI 定时任务的实现方法
Jan 22 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读取大文件的多种方法介绍
2016/04/04 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
javascript IFrame 强制刷新代码
2009/07/23 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
JavaScript中的this到底是什么(一)
2015/12/09 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
JavaScript正则表达式实例详解
2016/10/16 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
2017/10/31 Javascript
Vue 获取数组键名的方法
2018/06/21 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
python 获取文件列表(或是目录例表)
2009/03/25 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
python中将正则过滤的内容输出写入到文件中的实例
2018/10/21 Python
python分块读取大数据,避免内存不足的方法
2018/12/10 Python
djang常用查询SQL语句的使用代码
2019/02/15 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
python批量处理文件或文件夹
2020/07/28 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
Nike法国官方网站:Nike.com FR
2018/07/22 全球购物
生产经理的自我评价分享
2013/11/07 职场文书
高级护理专业毕业生推荐信
2013/12/25 职场文书
办公室主任先进事迹
2014/01/18 职场文书
经理助理岗位职责
2014/03/05 职场文书
国企干部对照检查材料
2014/08/22 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
商业计划书格式、范文
2019/03/21 职场文书