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搭建APNS苹果推送通知推送服务的相关模块使用指南
Jun 02 Python
浅谈python 四种数值类型(int,long,float,complex)
Jun 08 Python
详解python调度框架APScheduler使用
Mar 28 Python
python机器学习理论与实战(二)决策树
Jan 19 Python
Python自定义线程池实现方法分析
Feb 07 Python
通过Pandas读取大文件的实例
Jun 07 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
python标识符命名规范原理解析
Jan 10 Python
python操作docx写入内容,并控制文本的字体颜色
Feb 13 Python
基于Python获取docx/doc文件内容代码解析
Feb 17 Python
在Sublime Editor中配置Python环境的详细教程
May 03 Python
tensorflow+k-means聚类简单实现猫狗图像分类的方法
Apr 28 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
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
php获取用户IPv4或IPv6地址的代码
2012/11/15 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
jquery 事件执行检测代码
2009/12/09 Javascript
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
js网页中的(运行代码)功能实现思路
2013/02/04 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
jquery处理json对象
2014/11/03 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
python使用opencv读取图片的实例
2017/08/17 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
美国在线鲜花速递:ProFlowers
2017/01/05 全球购物
如何进行Linux分区优化
2016/09/13 面试题
中药专业大学生医药工作求职信
2013/10/25 职场文书
初中生学习生活的自我评价
2013/11/20 职场文书
中式结婚主持词
2014/03/14 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
酒店管理求职信范文
2014/04/06 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书