python连接PostgreSQL过程解析


Posted in Python onFebruary 09, 2020

这篇文章主要介绍了python连接PostgreSQL过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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实现的重启关机程序实例
Aug 21 Python
Python的gevent框架的入门教程
Apr 29 Python
在python中实现对list求和及求积
Nov 14 Python
详解numpy的argmax的具体使用
May 27 Python
Python任意字符串转16, 32, 64进制的方法
Jun 12 Python
python3 tkinter实现添加图片和文本
Nov 26 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
Feb 07 Python
jupyter 实现notebook中显示完整的行和列
Apr 09 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 Python
python和go语言的区别是什么
Jul 20 Python
PyQt5结合matplotlib绘图的实现示例
Sep 15 Python
python单元测试之pytest的使用
Jun 07 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
Feb 09 #Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
Feb 09 #Python
python 爬取疫情数据的源码
Feb 09 #Python
python代码如何实现余弦相似性计算
Feb 09 #Python
python字符串替换re.sub()实例解析
Feb 09 #Python
Python随机数函数代码实例解析
Feb 09 #Python
Python如何访问字符串中的值
Feb 09 #Python
You might like
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
PHP代码加密的方法总结
2020/03/13 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
element-ui 时间选择器限制范围的实现(随动)
2019/01/09 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
2019/11/15 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
python抓取京东商城手机列表url实例代码
2013/12/18 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
深入了解Python数据类型之列表
2016/06/24 Python
python邮件发送smtplib使用详解
2020/06/16 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
局域网内python socket实现windows与linux间的消息传送
2019/04/19 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
在Django下测试与调试REST API的方法详解
2019/08/29 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
电气专业应届生求职信
2013/11/01 职场文书
外语专业毕业生自荐信
2014/04/14 职场文书
本科应届生自荐信
2014/06/29 职场文书
工程部岗位职责
2015/02/10 职场文书
搞笑老公保证书
2015/02/26 职场文书
毕业实习感受与体会
2015/05/26 职场文书