python連接PostgreSQL過程解析
這篇文章主要介紹了python連接PostgreSQL過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
1. 常用模塊
# 連接數(shù)據(jù)庫
connect()函數(shù)創(chuàng)建一個(gè)新的數(shù)據(jù)庫連接對(duì)話并返回一個(gè)新的連接實(shí)例對(duì)象
PG_CONF_123 = { 'user':'emma', 'port':123, 'host':'192.168.1.123', 'password':'emma', 'database':'dbname'} conn = psycopg2.connect(**PG_CONF_123)
# 打開一個(gè)操作整個(gè)數(shù)據(jù)庫的光標(biāo)
連接對(duì)象可以創(chuàng)建光標(biāo)用來執(zhí)行SQL語句
cur = conn.cursor()
# 執(zhí)行一個(gè)創(chuàng)建表的SQL語句
光標(biāo)可以使用execute()和executemany()函數(shù)
cur.execute("CREATE TABLE test (id serial PRIMARY KEY, num integer, data varchar);")
# 傳遞參數(shù)給插入語句
cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)",(100, "abc'def"))
# 執(zhí)行查詢語句并將獲取到的數(shù)據(jù)作為python對(duì)象
cur.execute("SELECT * FROM test;") cur.fetchone() (1, 100, "abc'def")
# 提交修改
如果只使用查詢語句不用commit方法,insert/update/delete等操作需要調(diào)用commit()。rollback()函數(shù)用于會(huì)滾到上次調(diào)用commit()方法之后。
conn.commit()
# 關(guān)閉數(shù)據(jù)庫連接
cur.close() conn.close()
2. 防范SQL注入漏洞
典型的SQL注入漏洞形式:
SQL = "select * from userinfo where id = '%s'" % (id)
SQL = "select * from userinfo where id = '{}'".format(id)
如果有人惡意攻擊,在傳入?yún)?shù)的代碼中加入惡意代碼,如:
request.id = '123; drop tabel userid;'
會(huì)造成嚴(yán)重風(fēng)險(xiǎn),為防止此問題,應(yīng)該通過第二位變量傳入?yún)?shù)的方法:%s(無論變量是什么數(shù)據(jù)類型,都使用%s)
SQL = "INSERT INTO authors (name) VALUES (%s);" # Note: no quotes data = ("O'Reilly", ) cur.execute(SQL, data) # Note: no % operator
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python線性擬合實(shí)現(xiàn)函數(shù)與用法示例
這篇文章主要介紹了Python線性擬合實(shí)現(xiàn)函數(shù)與用法,結(jié)合實(shí)例形式分析了Python使用線性擬合算法與不使用線性擬合算法的相關(guān)算法操作技巧,需要的朋友可以參考下2018-12-12Python 讀取串口數(shù)據(jù),動(dòng)態(tài)繪圖的示例
今天小編就為大家分享一篇Python 讀取串口數(shù)據(jù),動(dòng)態(tài)繪圖的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07Python通過for循環(huán)理解迭代器和生成器實(shí)例詳解
這篇文章主要介紹了Python通過for循環(huán)理解迭代器和生成器,結(jié)合實(shí)例形式詳細(xì)分析了迭代器和生成器的概念、原理、使用方法及相關(guān)操作技巧,需要的朋友可以參考下2019-02-02對(duì)python過濾器和lambda函數(shù)的用法詳解
今天小編就為大家分享一篇對(duì)python過濾器和lambda函數(shù)的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01Python開發(fā)之QT解決無邊框界面拖動(dòng)卡屏問題(附帶源碼)
朋友在學(xué)習(xí)QT的過程中,都會(huì)遇到各種問題,今天就QT無邊框拖動(dòng)花屏問題給大家詳細(xì)介紹,究竟該如何解決呢,下面通過實(shí)例代碼和圖文相結(jié)合給大家詳細(xì)介紹,需要的朋友參考下吧2021-05-05Vue的el-scrollbar實(shí)現(xiàn)自定義滾動(dòng)
本篇文章給大家分享了Vue的el-scrollbar實(shí)現(xiàn)自定義滾動(dòng)實(shí)現(xiàn)的過程和實(shí)例代碼,對(duì)此有需要的朋友可以參考下。2018-05-05