日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python連接PostgreSQL數(shù)據(jù)庫(kù)的過(guò)程詳解

系統(tǒng) 1766 0

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),為防止此問(wèn)題,應(yīng)該通過(guò)第二位變量傳入?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í)有所幫助,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 正阳县| 达州市| 湖州市| 南雄市| 杂多县| 武功县| 宜都市| 竹北市| 阿克陶县| 吉木乃县| 恩施市| 罗源县| 巴东县| 包头市| 灌南县| 孝感市| 朝阳市| 辽宁省| 双辽市| 柳河县| 莱芜市| 连城县| 海南省| 正镶白旗| 铜鼓县| 绥棱县| 临江市| 长治县| 南昌县| 东乌珠穆沁旗| 镇康县| 尼木县| 顺昌县| 花莲县| 罗源县| 凤翔县| 比如县| 临沭县| 宜兰市| 文安县| 犍为县|