国产探花免费观看_亚洲丰满少妇自慰呻吟_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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 云龙县| 二连浩特市| 宁化县| 抚顺县| 潍坊市| 龙里县| 宜良县| 南漳县| 阿坝县| 武威市| 锡林浩特市| 石屏县| 大英县| 固始县| 丰县| 那曲县| 信阳市| 师宗县| 柯坪县| 若尔盖县| 石台县| 舞钢市| 左贡县| 龙陵县| 黄大仙区| 如皋市| 保亭| 萝北县| 饶平县| 建德市| 和林格尔县| 南安市| 肇东市| 大厂| 信丰县| 甘肃省| 德令哈市| 怀仁县| 苍溪县| 郑州市| 三门县|