pymysql模塊

pip3 install pymysql```
##一 鏈接遣臼、執(zhí)行sql美侦、關(guān)閉(游標(biāo))
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/3027050-fa90145d6acfba5b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

import pymysql
user=input('用戶名: ').strip()
pwd=input('密碼: ').strip()

鏈接

conn=pymysql.connect(host='localhost',user='root',password='123',database='egon',charset='utf8')

游標(biāo)

cursor=conn.cursor() #執(zhí)行?完畢返回的結(jié)果集默認(rèn)以元組顯示

cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)

執(zhí)行sql語句

sql='select * from userinfo where name="%s" and password="%s"' %(user,pwd) #注意%s需要加引號
print(sql)
res=cursor.execute(sql) #執(zhí)行sql語句钱磅,返回sql查詢成功的記錄數(shù)目
print(res)

cursor.close()
conn.close()

if res:
print('登錄成功')
else:
print('登錄失敗')

##二 execute()之sql注入

注意:符號--會注釋掉它之后的sql踢匣,正確的語法:--后至少有一個任意字符

根本原理:就根據(jù)程序的字符串拼接name='%s',我們輸入一個xxx' -- haha,用我們輸入的xxx加'在程序中拼接成一個判斷條件name='xxx' -- haha'

最后那一個空格求厕,在一條sql語句中如果遇到select * from t1 where id > 3 -- and name='egon';則--之后的條件被注釋掉了

1著隆、sql注入之:用戶存在,繞過密碼

egon' -- 任意字符

2甘改、sql注入之:用戶不存在旅东,繞過用戶與密碼

xxx' or 1=1 -- 任意字符


![Paste_Image.png](http://upload-images.jianshu.io/upload_images/3027050-64131067bf1afdef.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/3027050-beef89421d149cf0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
http://images2017.cnblogs.com/blog/1036857/201709/1036857-20170914073927438-1525371660.png
解決方法:

原來是我們對sql進(jìn)行字符串拼接

sql="select * from userinfo where name='%s' and password='%s'" %(user,pwd)

print(sql)

res=cursor.execute(sql)

改寫為(execute幫我們做字符串拼接,我們無需且一定不能再為%s加引號了)

sql="select * from userinfo where name=%s and password=%s" #J5执!注意%s需要去掉引號忘嫉,因為pymysql會自動為我們加上
res=cursor.execute(sql,[user,pwd]) #pymysql模塊自動幫我們解決sql注入的問題荤牍,只要我們按照pymysql的規(guī)矩來。

##三 增庆冕、刪康吵、改:conn.commit()

import pymysql

鏈接

conn=pymysql.connect(host='localhost',user='root',password='123',database='egon')

游標(biāo)

cursor=conn.cursor()

執(zhí)行sql語句

part1

sql='insert into userinfo(name,password) values("root","123456");'

res=cursor.execute(sql) #執(zhí)行sql語句,返回sql影響成功的行數(shù)

print(res)

part2

sql='insert into userinfo(name,password) values(%s,%s);'

res=cursor.execute(sql,("root","123456")) #執(zhí)行sql語句访递,返回sql影響成功的行數(shù)

print(res)

part3

sql='insert into userinfo(name,password) values(%s,%s);'
res=cursor.executemany(sql,[("root","123456"),("lhf","12356"),("eee","156")]) #執(zhí)行sql語句晦嵌,返回sql影響成功的行數(shù)
print(res)

conn.commit() #提交后才發(fā)現(xiàn)表中插入記錄成功
cursor.close()
conn.close()

##四 查:fetchone,fetchmany拷姿,fetchall

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/3027050-f807bf6b977a6393.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

import pymysql

鏈接

conn=pymysql.connect(host='localhost',user='root',password='123',database='egon')

游標(biāo)

cursor=conn.cursor()

執(zhí)行sql語句

sql='select * from userinfo;'
rows=cursor.execute(sql) #執(zhí)行sql語句惭载,返回sql影響成功的行數(shù)rows,將結(jié)果放入一個集合,等待被查詢

cursor.scroll(3,mode='absolute') # 相對絕對位置移動

cursor.scroll(3,mode='relative') # 相對當(dāng)前位置移動

res1=cursor.fetchone()
res2=cursor.fetchone()
res3=cursor.fetchone()
res4=cursor.fetchmany(2)
res5=cursor.fetchall()
print(res1)
print(res2)
print(res3)
print(res4)
print(res5)
print('%s rows in set (0.00 sec)' %rows)

conn.commit() #提交后才發(fā)現(xiàn)表中插入記錄成功
cursor.close()
conn.close()

'''
(1, 'root', '123456')
(2, 'root', '123456')
(3, 'root', '123456')
((4, 'root', '123456'), (5, 'root', '123456'))
((6, 'root', '123456'), (7, 'lhf', '12356'), (8, 'eee', '156'))
rows in set (0.00 sec)
'''

##五 獲取插入的最后一條數(shù)據(jù)的自增ID

import pymysql
conn=pymysql.connect(host='localhost',user='root',password='123',database='egon')
cursor=conn.cursor()

sql='insert into userinfo(name,password) values("xxx","123");'
rows=cursor.execute(sql)
print(cursor.lastrowid) #在插入語句后查看

conn.commit()

cursor.close()
conn.close()


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末响巢,一起剝皮案震驚了整個濱河市描滔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌踪古,老刑警劉巖含长,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件券腔,死亡現(xiàn)場離奇詭異,居然都是意外死亡拘泞,警方通過查閱死者的電腦和手機(jī)纷纫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來田弥,“玉大人涛酗,你說我怎么就攤上這事铡原⊥迪茫” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵燕刻,是天一觀的道長只泼。 經(jīng)常有香客問我,道長卵洗,這世上最難降的妖魔是什么请唱? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮过蹂,結(jié)果婚禮上十绑,老公的妹妹穿的比我還像新娘。我一直安慰自己酷勺,他們只是感情好本橙,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脆诉,像睡著了一般甚亭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上击胜,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天亏狰,我揣著相機(jī)與錄音,去河邊找鬼偶摔。 笑死暇唾,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辰斋。 我是一名探鬼主播策州,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼亡呵!你這毒婦竟也來了抽活?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤锰什,失蹤者是張志新(化名)和其女友劉穎下硕,沒想到半個月后丁逝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡梭姓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年霜幼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片誉尖。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡罪既,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铡恕,到底是詐尸還是另有隱情琢感,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布探熔,位于F島的核電站驹针,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏诀艰。R本人自食惡果不足惜柬甥,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望其垄。 院中可真熱鬧苛蒲,春花似錦、人聲如沸绿满。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棒口。三九已至寄月,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間无牵,已是汗流浹背漾肮。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留茎毁,地道東北人克懊。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像七蜘,于是被迫代替她去往敵國和親谭溉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容