python连接PostgreSQL过程解析
这篇文章主要介绍了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("CREATETABLEtest(idserialPRIMARYKEY,numinteger,datavarchar);")
#传递参数给插入语句
cur.execute("INSERTINTOtest(num,data)VALUES(%s,%s)",(100,"abc'def"))
#执行查询语句并将获取到的数据作为python对象
cur.execute("SELECT*FROMtest;") cur.fetchone() (1,100,"abc'def")
#提交修改
如果只使用查询语句不用commit方法,insert/update/delete等操作需要调用commit()。rollback()函数用于会滚到上次调用commit()方法之后。
conn.commit()
#关闭数据库连接
cur.close() conn.close()
2.防范SQL注入漏洞
典型的SQL注入漏洞形式:
SQL="select*fromuserinfowhereid='%s'"%(id)
SQL="select*fromuserinfowhereid='{}'".format(id)
如果有人恶意攻击,在传入参数的代码中加入恶意代码,如:
request.id='123;droptabeluserid;'
会造成严重风险,为防止此问题,应该通过第二位变量传入参数的方法:%s(无论变量是什么数据类型,都使用%s)
SQL="INSERTINTOauthors(name)VALUES(%s);"#Note:noquotes data=("O'Reilly",) cur.execute(SQL,data)#Note:no%operator
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。