国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python連接PostgreSQL過程解析

2020-02-15 21:19:12
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了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("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 quotesdata = ("O'Reilly", )cur.execute(SQL, data) # Note: no % operator

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万盛区| 泊头市| 兴业县| 犍为县| 乌拉特后旗| 博白县| 元氏县| 峨山| 彭阳县| 拜城县| 沐川县| 常山县| 塘沽区| 滦平县| 万安县| 格尔木市| 峨眉山市| 泰来县| 婺源县| 恩平市| 西乌珠穆沁旗| 静乐县| 佛山市| 吉木乃县| 瑞安市| 平和县| 贵州省| 兰考县| 本溪市| 民和| 秀山| 寻甸| 思南县| 三台县| 清涧县| 沈丘县| 广平县| 安仁县| 扎兰屯市| 安西县| 金寨县|