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获取apk文件URL地址实例
Nov 01 Python
python实现连接mongodb的方法
May 08 Python
Python使用multiprocessing创建进程的方法
Jun 04 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
python 反编译exe文件为py文件的实例代码
Jun 27 Python
解决python中导入win32com.client出错的问题
Jul 26 Python
Python3 文章标题关键字提取的例子
Aug 26 Python
使用python实现男神女神颜值打分系统(推荐)
Oct 31 Python
python中从for循环延申到推导式的具体使用
Nov 29 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
May 09 Python
Python3.8安装Pygame教程步骤详解
Aug 14 Python
python实现简单的聊天小程序
Jul 07 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集成FCK的函数代码
2008/09/27 PHP
8个必备的PHP功能实例代码
2013/10/27 PHP
PHP Curl多线程原理实例详解
2013/11/06 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
PHP区块查询实现方法分析
2018/05/12 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&Firefox] 有文档和例子
2007/05/30 Javascript
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
2020/09/16 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
javascript canvas封装动态时钟
2020/09/30 Javascript
如何在VUE中使用vue-awesome-swiper
2021/01/04 Vue.js
新手该如何学python怎么学好python?
2008/10/07 Python
python PIL模块与随机生成中文验证码
2016/02/27 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
python如何基于redis实现ip代理池
2020/01/17 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
python将unicode和str互相转化的实现
2020/05/11 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
python中pickle模块浅析
2020/12/29 Python
详解Python遍历列表时删除元素的正确做法
2021/01/07 Python
ASP.NET Core中的配置详解
2021/02/05 Python
基于HTML5 Canvas:字符串,路径,背景,图片的详解
2013/05/09 HTML / CSS
介绍一下Java中标识符的命名规则
2014/02/03 面试题
简单租房协议书(范本)
2014/10/13 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书