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通过post提交数据的方法
May 06 Python
八大排序算法的Python实现
Jan 28 Python
Python抓取手机号归属地信息示例代码
Nov 28 Python
Python数据结构之单链表详解
Sep 12 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
Oct 07 Python
Python设计模式之模板方法模式实例详解
Jan 17 Python
python实现输入任意一个大写字母生成金字塔的示例
Oct 27 Python
python3 tcp的粘包现象和解决办法解析
Dec 09 Python
python时间与Unix时间戳相互转换方法详解
Feb 13 Python
python3通过udp实现组播数据的发送和接收操作
May 05 Python
在Django中使用MQTT的方法
May 10 Python
Pytorch实现图像识别之数字识别(附详细注释)
May 11 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
smarty section简介与用法分析
2008/10/03 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
php在linux下检测mysql同步状态的方法
2015/01/15 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
jQuery + Flex 通过拖拽方式动态改变图片的代码
2011/08/03 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
2016/01/08 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
Nodejs搭建wss服务器教程
2017/05/24 NodeJs
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
js经验分享 JavaScript反调试技巧
2018/03/10 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
js核心基础之构造函数constructor用法实例分析
2019/05/11 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
用python3 urllib破解有道翻译反爬虫机制详解
2019/08/14 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
2019/12/04 Python
python中关于数据类型的学习笔记
2020/07/19 Python
Web时代变迁及html5与html4的区别
2016/01/06 HTML / CSS
怎样写好自荐信和推荐信
2013/12/26 职场文书
汽车销售顾问求职自荐信
2014/01/01 职场文书
委托书的格式
2014/08/01 职场文书
解除施工合同协议书
2014/10/17 职场文书
见习报告格式范文
2014/11/08 职场文书
Golang 链表的学习和使用
2022/04/19 Golang