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 相关文章推荐
pyside写ui界面入门示例
Jan 22 Python
django通过ajax发起请求返回JSON格式数据的方法
Jun 04 Python
详解Django中的form库的使用
Jul 18 Python
Python环境下安装使用异步任务队列包Celery的基础教程
May 07 Python
Python排序搜索基本算法之希尔排序实例分析
Dec 09 Python
浅析python协程相关概念
Jan 20 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
PyQt5 对图片进行缩放的实例
Jun 18 Python
python针对Oracle常见查询操作实例分析
Apr 30 Python
pandas分批读取大数据集教程
Jun 06 Python
Python Celery异步任务队列使用方法解析
Aug 10 Python
pytorch 移动端部署之helloworld的使用
Oct 30 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
PHP时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
浅谈php的优缺点
2015/07/14 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
2019/03/18 PHP
JavaScript与函数式编程解释
2007/04/27 Javascript
用ASP将SQL搜索出来的内容导出为TXT的代码
2007/07/27 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
AngularJS基于factory创建自定义服务的方法详解
2017/05/25 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
vue-cli中实现响应式布局的方法
2021/03/02 Vue.js
Python装饰器使用实例:验证参数合法性
2015/06/24 Python
python生成随机密码或随机字符串的方法
2015/07/03 Python
Python库安装速度过慢解决方案
2020/07/14 Python
Python面向对象特殊属性及方法解析
2020/09/16 Python
python不同版本的_new_不同点总结
2020/12/09 Python
大专生自我鉴定范文
2013/10/01 职场文书
新员工培训个人的自我评价
2013/10/09 职场文书
人事主管岗位职责
2014/01/30 职场文书
数学高效课堂实施方案
2014/03/29 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
招商银行收入证明
2015/06/17 职场文书
Nginx域名转发使用场景代码实例
2021/03/31 Servers
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS