python连接PostgreSQL数据库的过程详解

系统 1509 0

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
          

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论