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中使用item()方法遍历字典的例子
Aug 26 Python
Python使用urllib模块的urlopen超时问题解决方法
Nov 08 Python
pandas修改DataFrame列名的方法
Apr 08 Python
Python装饰器原理与简单用法实例分析
Apr 29 Python
python 日期操作类代码
May 05 Python
对python3中的RE(正则表达式)-详细总结
Jul 23 Python
用Python画小女孩放风筝的示例
Nov 23 Python
python 线性回归分析模型检验标准--拟合优度详解
Feb 24 Python
python的reverse函数翻转结果为None的问题
May 11 Python
Python3爬虫中Selenium的用法详解
Jul 10 Python
Python实时监控网站浏览记录实现过程详解
Jul 14 Python
python中使用.py配置文件的方法详解
Nov 23 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 开源AJAX框架14种
2009/08/24 PHP
PHP在特殊字符前加斜杠的实现代码
2011/07/17 PHP
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
一个简单的php路由类
2016/05/29 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
node.js博客项目开发手记
2018/03/16 Javascript
vue写h5页面的方法总结
2019/02/12 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
Python读取键盘输入的2种方法
2015/06/16 Python
深入解析Python中的线程同步方法
2016/06/14 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
Python使用requests提交HTTP表单的方法
2018/12/26 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
Django接收自定义http header过程详解
2019/08/23 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
韩语专业本科生求职信
2013/10/01 职场文书
创伤外科专业推荐信范文
2013/11/19 职场文书
党员教师一句话承诺
2014/05/30 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
python 如何获取页面所有a标签下href的值
2021/05/06 Python