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网络编程学习笔记(四):域名系统
Jun 09 Python
python中如何使用朴素贝叶斯算法
Apr 06 Python
Python实现中文数字转换为阿拉伯数字的方法示例
May 26 Python
Python 多线程的实例详解
Sep 07 Python
简单了解Django模板的使用
Dec 20 Python
Python内置模块ConfigParser实现配置读写功能的方法
Feb 12 Python
浅谈python之新式类
Aug 12 Python
python机器学习之KNN分类算法
Aug 29 Python
Django框架创建mysql连接与使用示例
Jul 29 Python
python代码 FTP备份交换机配置脚本实例解析
Aug 01 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
Jun 11 Python
Python多分支if语句的使用
Sep 03 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
PHP 字符串分割和比较
2009/10/06 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
php结合md5实现的加密解密方法
2016/01/25 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
laravel 框架配置404等异常页面
2019/01/07 PHP
jquery的键盘事件修改代码
2011/02/24 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
js实现动态创建的元素绑定事件
2016/07/19 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
基于require.js的使用(实例讲解)
2017/09/07 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
python文件与目录操作实例详解
2016/02/22 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
pytorch之添加BN的实现
2020/01/06 Python
详解Python 中的容器 collections
2020/08/17 Python
css3打造一款漂亮的卡哇伊按钮
2013/03/20 HTML / CSS
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
美国高端牛仔品牌:Silver Jeans
2019/12/12 全球购物
"引用"与指针的区别是什么
2016/09/07 面试题
Prototype如何更新局部页面
2013/03/03 面试题
社区国庆节活动方案
2014/02/05 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
通知函的格式
2015/04/27 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
详解Java实践之抽象工厂模式
2021/06/18 Java/Android
Python音乐爬虫完美绕过反爬
2021/08/30 Python
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏
2022漫威和DC电影上映作品
2022/04/05 欧美动漫