python连接PostgreSQL数据库的过程详解
作者:郭雪原 时间:2023-08-24 03:42:31
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
来源:https://www.cnblogs.com/guoxueyuan/p/7772435.html
标签:python,连接,postgresql,数据库
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
几种修复ACCESS数据库的实用方法
2008-11-20 17:37:00
Oracle查看逻辑读、物理读资源占用排行的SQL语句
2023-06-25 23:53:53
asp如何实现人民币的大写转换?
2010-05-24 18:27:00
解决大字段在Form中Post出错的方法
2008-04-17 14:00:00
产品列表到底应该怎么做?
2009-01-02 16:34:00
![](https://img.aspxhome.com/file/UploadPic/20091/2/productlist01-70s.png)
建立三层结构的ASP应用程序
2009-01-21 19:41:00
利用FrontPage 2003制作网络申请系统
2008-02-21 14:34:00
![](https://img.aspxhome.com/file/uploadpic/20082/21/2008221143853265.jpg)
SQL学习笔记六 union联合结果集使用
2011-09-30 11:34:27
Thinkphp结合ajaxFileUpload实现ajax异步图片传输全套代码
2023-06-14 04:01:53
对学好网页设计很有价值的一句话
2007-10-28 16:04:00
![](https://img.aspxhome.com/file/UploadPic/200710/28/2007102816649948s.jpg)
鼠标经过超链时的提示图层源码
2010-03-17 20:51:00
javascript模拟鼠标自动点击链接
2007-11-03 19:08:00
Oracle学习笔记(一)
2012-01-05 18:51:44
ASP 读取MP3文件帧的信息比特率,采样频率,播放时间
2010-06-04 12:22:00
采用XMLHTTP编写一个天气预报的程序
2007-10-15 12:35:00
网页设计:巧用记事本编辑网页
2008-02-05 09:00:00
常用的数据库备份类型有哪些?
2009-11-01 13:02:00
《HTML5设计原理》读后随记
2011-01-25 12:26:00
认识MySQL数据库对服务器端光标的限制
2009-03-25 17:35:00
SEO与“nofollow”及“external nofollow”
2007-12-15 09:31:00