python模塊:pymysql學(xué)習(xí)

pymysql是python中操作mysql數(shù)據(jù)庫的一個(gè)優(yōu)秀的模塊烦租,使用起來也是非常的簡單和方便疾掰,只用記住幾個(gè)下面標(biāo)注紅色的部分的用法就ok了转晰。

從數(shù)據(jù)庫的增刪改查操作來學(xué)習(xí)pymysql:

import pymysql
# 導(dǎo)入模塊
conn = pymysql.connect(host='localhost',user='root',password='root',port=3306,database='stupy',charset='utf8')

上面的代碼是連接數(shù)據(jù)庫郭怪,眼熟就對了,基本都是一個(gè)套路广辰,有個(gè)地方需要說明下的是,后面的字符集主之,前幾天在抓某寶商品評論的時(shí)候就遇到一個(gè)問題择吊,評論內(nèi)容里面包含了emoji,用上面的代碼連接數(shù)據(jù)庫執(zhí)行入庫操作的時(shí)候報(bào)錯(cuò)了:

Incorrect string value: '\xF0\x9F\x98\x84'

一臉懵啊有沒有槽奕,查了下才發(fā)現(xiàn)是emoji表情的問題几睛,解決的方法也很簡單,將連接數(shù)據(jù)庫的字符集改成utf8mb4粤攒,且數(shù)據(jù)庫所森、表、字段都需要修改為utf8mb4字符集夯接,重要;兰谩!盔几!

發(fā)生這個(gè)錯(cuò)誤的原因是常見字符串占位3個(gè)字節(jié)晴弃,而emoji表情符號占用4個(gè)字節(jié),utf8就不好使了逊拍,所以就得用utf8mb4字符集上鞠。

下面來根據(jù)指定條件來查詢數(shù)據(jù)庫(數(shù)據(jù)表文件獲取口令0514):

with conn.cursor() as cursor:
#     with代碼管理器,可以省掉cursor.close和conn.close
    sql = 'select id,title,area1,huxing,price from fang where area1=%s'
    cursor.execute(sql,['武昌'])
#     還有執(zhí)行多條sql和查詢條件參數(shù)的芯丧,在后面進(jìn)階偏中來寫
#     rows = cursor.fetchall()
    print('取一條:',cursor.fetchone())
    print('獲取10條記錄:',cursor.fetchmany(10))
    print('取一條:',cursor.fetchone())
    
    
#     print(cursor.scroll(1, mode='absolute'))
# 指針按照絕對位置移動(dòng)1
#     print(cursor.scroll(1, mode='relative'))
# 指針按照相對位置移動(dòng)1(相對當(dāng)前位置)
# 這個(gè)地方的fetchall()獲取所有記錄芍阎,還可以有fetchone獲取一條記錄的,返回記錄數(shù)

仔細(xì)測試下這里的三個(gè)獲取查詢結(jié)果的方法

fetchone:獲取一條記錄

fetchmany:獲取指定條數(shù)記錄

fetchall:獲取所有記錄

上面代碼中缨恒,打印出來的結(jié)果是按照代碼執(zhí)行順序來獲取數(shù)據(jù)的谴咸,就是說轮听,在調(diào)用fetchone的時(shí)候,指針會移動(dòng)到下個(gè)位置寿冕。

增加單條記錄:

with conn.cursor() as cursor:
    
    sql1 = 'insert into spy(title,author,url,dt,ly) values(%s,%s,%s,%s,%s)'
    # values里面有兩種寫法蕊程,一種是直接用%s占位符(沒有%d),一種是帶字段名%(name)s
    row = cursor.execute(sql1,['test5','e','www.baidu.com','2019','loacl'])
# 批量插入多條數(shù)據(jù)驼唱,values用列表
    conn.commit()
# 涉及修改數(shù)據(jù)庫操作的藻茂,需要用commit提交事務(wù)
    print(row)
    print(cursor.lastrowid)

增加多條記錄:

with conn.cursor() as cursor:
    
    sql1 = 'insert into spy(title,author,url,dt,ly) values(%s,%s,%s,%s,%s)'
    
    data = [
        ('test1','a','www.baidu.com','2019','loacl'),
         ('test2','b','www.baidu.com','2019','loacl'),
         ('test3','c','www.baidu.com','2019','loacl')
    ]

    row = cursor.executemany(sql1,data)
# 批量插入多條數(shù)據(jù),values用列表
    conn.commit()
# 涉及修改數(shù)據(jù)庫操作的玫恳,需要用commit提交事務(wù)
    print(row)

單條記錄和多條記錄的區(qū)別主要一個(gè)是execute辨赐,一個(gè)是executemany

刪除操作:

with conn.cursor() as cursor:
    
    sql1 = 'delete from spy where author=%s'
    row = cursor.execute(sql1,['e'])
    conn.commit()
    print(row)
    # 打印結(jié)果是影響的記錄數(shù)

修改操作:

with conn.cursor() as cursor:
    
    sql1 = 'update spy set author=%s where ly=%s'
    row = cursor.execute(sql1,['gary.w','loacl'])
    conn.commit()
    print(row)
    # 打印結(jié)果是影響的記錄數(shù)

數(shù)據(jù)回滾:

cursor = conn.cursor()
sql1 = 'insert into spy(title,author,url,dt,ly) values(%s,%s,%s,%s,%s)'
sql2 = 'insert into spy(id,title,author,url,ly) values(%s,%s,%s,%s,%s)'

try:
    cursor.execute(sql1,['test6','匿名','www.vxinhao.com','2019','loacl'])
    cursor.execute(sql2,['這里應(yīng)該對應(yīng)的是int的id','錯(cuò)誤數(shù)據(jù)','www.baidu.com','2019','loacl'])
    conn.commit()
except Exception as e:
    print(str(e))
    conn.rollback()
#     出現(xiàn)異常,執(zhí)行回滾
finally:
    cursor.close()
    conn.close()
    
# 執(zhí)行回滾后京办,數(shù)據(jù)不會被添加

這里做了個(gè)異常處理,看下異常處理的用法(模板):

try:
這里放執(zhí)行數(shù)據(jù)庫操作的代碼塊
except:
當(dāng)上面的代碼出現(xiàn)異常的時(shí)候執(zhí)行的代碼,這里用了rollback()方法
finally:
這里是一定會執(zhí)行的代碼,哪怕是前面出現(xiàn)錯(cuò)誤

只要sql語句不會有什么問題掀序,本文到這里,基本就夠用了(節(jié)約時(shí)間)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惭婿,一起剝皮案震驚了整個(gè)濱河市不恭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌财饥,老刑警劉巖换吧,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異钥星,居然都是意外死亡沾瓦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門谦炒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贯莺,“玉大人,你說我怎么就攤上這事宁改÷铺剑” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵透且,是天一觀的道長撕蔼。 經(jīng)常有香客問我,道長秽誊,這世上最難降的妖魔是什么鲸沮? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮锅论,結(jié)果婚禮上讼溺,老公的妹妹穿的比我還像新娘。我一直安慰自己最易,他們只是感情好怒坯,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布炫狱。 她就那樣靜靜地躺著,像睡著了一般剔猿。 火紅的嫁衣襯著肌膚如雪视译。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天归敬,我揣著相機(jī)與錄音酷含,去河邊找鬼。 笑死汪茧,一個(gè)胖子當(dāng)著我的面吹牛椅亚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播舱污,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼呀舔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了扩灯?” 一聲冷哼從身側(cè)響起媚赖,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎珠插,沒想到半個(gè)月后省古,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丧失,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惜互。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片布讹。...
    茶點(diǎn)故事閱讀 40,567評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖训堆,靈堂內(nèi)的尸體忽然破棺而出描验,到底是詐尸還是另有隱情,我是刑警寧澤坑鱼,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布膘流,位于F島的核電站,受9級特大地震影響鲁沥,放射性物質(zhì)發(fā)生泄漏呼股。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一画恰、第九天 我趴在偏房一處隱蔽的房頂上張望彭谁。 院中可真熱鬧,春花似錦允扇、人聲如沸缠局。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狭园。三九已至读处,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間唱矛,已是汗流浹背罚舱。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留揖赴,地道東北人馆匿。 一個(gè)月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像燥滑,于是被迫代替她去往敵國和親渐北。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評論 2 359

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

  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時(shí)铭拧,會觸發(fā)此異常赃蛛。 O...
    我想起個(gè)好名字閱讀 5,336評論 0 9
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡介】: Python 是一個(gè)...
    _小老虎_閱讀 5,750評論 0 10
  • 本文主要總結(jié)了工作中一些常用的操作及不合理的操作搀菩,在對慢查詢進(jìn)行優(yōu)化時(shí)收集的一些有用的資料和信息呕臂,本文適合有MyS...
    Chting閱讀 606評論 0 1
  • 秋雨瀟瀟漸轉(zhuǎn)涼,微風(fēng)過處帶余香肪跋。 天生就是清髙物歧蒋,哪怕污泥淤滿塘。
    秋池HD閱讀 1,294評論 4 8
  • 經(jīng)過幾天的休息,身體終于恢復(fù)如初吴叶。朝陽從東方冉冉升起阐虚,我也奮力的行走在前往西藏的路上。從巴塘出來蚌卤,路途平坦实束,山的...
    南柯420閱讀 658評論 -1 6