python連接PostgreSQL數(shù)據(jù)庫(kù)的過程詳解
1. 常用模塊
# 連接數(shù)據(jù)庫(kù)
connect()函數(shù)創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)連接對(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ù)庫(kù)的光標(biāo)
連接對(duì)象可以創(chuàng)建光標(biāo)用來(lái)執(zhí)行SQL語(yǔ)句
cur = conn.cursor()
# 執(zhí)行一個(gè)創(chuàng)建表的SQL語(yǔ)句
光標(biāo)可以使用execute()和executemany()函數(shù)
cur.execute("CREATE TABLE test (id serial PRIMARY KEY, num integer, data varchar);")
# 傳遞參數(shù)給插入語(yǔ)句
cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)",(100, "abc'def"))
# 執(zhí)行查詢語(yǔ)句并將獲取到的數(shù)據(jù)作為python對(duì)象
cur.execute("SELECT * FROM test;") cur.fetchone() (1, 100, "abc'def")
# 提交修改
如果只使用查詢語(yǔ)句不用commit方法,insert/update/delete等操作需要調(diào)用commit()。rollback()函數(shù)用于會(huì)滾到上次調(diào)用commit()方法之后。
conn.commit()
# 關(guān)閉數(shù)據(jù)庫(kù)連接
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(無(wú)論變量是什么數(shù)據(jù)類型,都使用%s)
SQL = "INSERT INTO authors (name) VALUES (%s);" # Note: no quotes data = ("O'Reilly", ) cur.execute(SQL, data) # Note: no % operator
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python隨機(jī)生成數(shù)據(jù)后插入到PostgreSQL
- Python連接PostgreSQL數(shù)據(jù)庫(kù)的方法
- Python實(shí)現(xiàn)連接postgresql數(shù)據(jù)庫(kù)的方法分析
- python 兩個(gè)數(shù)據(jù)庫(kù)postgresql對(duì)比
- Python 中創(chuàng)建 PostgreSQL 數(shù)據(jù)庫(kù)連接池
- Python讀取postgresql數(shù)據(jù)庫(kù)詳情
- Python訪問PostgreSQL數(shù)據(jù)庫(kù)詳細(xì)操作
相關(guān)文章
Pandas操作CSV文件的讀寫實(shí)現(xiàn)方法
這篇文章主要介紹了Pandas操作CSV文件的讀寫實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Numpy中矩陣matrix讀取一列的方法及數(shù)組和矩陣的相互轉(zhuǎn)換實(shí)例
今天小編就為大家分享一篇Numpy中矩陣matrix讀取一列的方法及數(shù)組和矩陣的相互轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-07-07Python實(shí)現(xiàn)合并同一個(gè)文件夾下所有PDF文件的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)合并同一個(gè)文件夾下所有PDF文件的方法,涉及Python針對(duì)pdf文件的讀取、判斷、解密、寫入合并等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04Python Tornado實(shí)現(xiàn)WEB服務(wù)器Socket服務(wù)器共存并實(shí)現(xiàn)交互的方法
這篇文章主要介紹了Python Tornado實(shí)現(xiàn)WEB服務(wù)器Socket服務(wù)器共存并實(shí)現(xiàn)交互的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05Django DRF APIView源碼運(yùn)行流程詳解
這篇文章主要介紹了Django DRF APIView源碼運(yùn)行流程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08python中redis查看剩余過期時(shí)間及用正則通配符批量刪除key的方法
這篇文章主要介紹了python中redis查看剩余過期時(shí)間及用正則通配符批量刪除key的方法,需要的朋友可以參考下2018-07-07