Python學(xué)習(xí)

第二十天

Python與MySQL交互(一)

1综慎、數(shù)據(jù)庫數(shù)據(jù)準(zhǔn)備

創(chuàng)建數(shù)據(jù)庫并添加數(shù)據(jù)

#學(xué)生表
CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `province` varchar(20) NOT NULL,
  `city` varchar(20) NOT NULL,
  `town` varchar(20) NOT NULL,
  `address` varchar(100) NOT NULL,
  `num` char(10) DEFAULT NULL,
  `cid` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
)
#班級表
CREATE TABLE `class` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
)

2示惊、Python中操作MySQL數(shù)據(jù)庫

2.1愉镰、引入模塊pymysql

pymysql類似java中的數(shù)據(jù)庫驅(qū)動,有了這個驅(qū)動我們才可以連接MySQL數(shù)據(jù)庫录择。pymysql是在 Python3.x 版本中用于連接 MySQL 服務(wù)器的一個庫隘竭,Python2中則使用mysqldb讼渊。我們要想引入pymysql,第一步就需要安裝pymysql菱皆。兩種方式:
1、pip3 install PyMySQL
2京痢、PyCharm安裝

2.2拯田、創(chuàng)建連接

import pymysql
#創(chuàng)建連接
db = pymysql.connect(host='localhost',port=3306,user='root',
                     passwd='root',database='python_db')

#對數(shù)據(jù)的增刪改查操作在這里

# 關(guān)閉連接
db.close()

其中各個參數(shù):
1、host吭产、連接的MySQL主機鸭轮,若是本地則為localhost窃爷;
2、port医吊、連接的MySQL主機端口逮京,默認(rèn)3306;
3草描、user策严、連接的用戶名;
4逛绵、passwd倔韭、連接的密碼狐肢;
5、database碟联、數(shù)據(jù)庫名字;
6鲤孵、charset、編碼方式贵试,建議utf-8

2.3凯正、獲取cursor

# 使用 cursor() 方法創(chuàng)建一個游標(biāo)對象 cursor
cursor = db.cursor()

2.4廊散、執(zhí)行操作

2.4.1、執(zhí)行查詢操作
2.4.1.1运准、查詢一行數(shù)據(jù)
import pymysql
#創(chuàng)建連接
db = pymysql.connect(host='localhost',port=3306,user='root',
                     passwd='root',database='python_db')

# 使用 cursor() 方法創(chuàng)建一個游標(biāo)對象 cursor
cursor = db.cursor()
#創(chuàng)建SQL語句 cursor.execute執(zhí)行
sql = 'select * from student where id = 1'
count = cursor.execute(sql) # count 查詢的同時 返回行數(shù)
print(count)
data = cursor.fetchone()
print(data)
# 關(guān)閉游標(biāo)與數(shù)據(jù)庫連接
cursor.close()
db.close()
2.4.1.1胁澳、查詢多行數(shù)據(jù)
import pymysql
#創(chuàng)建連接
db = pymysql.connect(host='localhost',port=3306,user='root',
                     passwd='root',database='python_db')

# 使用 cursor() 方法創(chuàng)建一個游標(biāo)對象 cursor
cursor = db.cursor()
#創(chuàng)建SQL語句 cursor.execute執(zhí)行
sql = 'select * from student'
count = cursor.execute(sql) # count 查詢的同時 返回行數(shù)
print(count)
data = cursor.fetchall()
if data:
    for row in data:
        id = row[0]
        name = row[1]
        province = row[2]
        city = row[3]
        town = row[4]
        address = row[5]
        num = row[6]
        cid = row[7]
        print('編號:%s,姓名:%s,學(xué)號:%s,地址:%s%s%s%s' %(id,name,num,province,city,town,address))
# 關(guān)閉游標(biāo)與數(shù)據(jù)庫連接
cursor.close()
db.close()

2.4.2韭畸、執(zhí)行添加操作
#添加
import pymysql
#創(chuàng)建連接
db = pymysql.connect(host='localhost',port=3306,user='root',
                     passwd='root',database='python_db')

# 使用 cursor() 方法創(chuàng)建一個游標(biāo)對象 cursor
cursor = db.cursor()
#創(chuàng)建SQL語句 cursor.execute執(zhí)行
sql = 'insert into Student(name,num,province,city,town,address,cid)' \
      ' values ("王五","5410050505","河南省","鄭州市","金水區(qū)","A地",1)'
try:
    #執(zhí)行SQL語句
    cursor.execute(sql)
    # 提交執(zhí)行
    db.commit()
except:
    #發(fā)生異陈脚蹋回滾
    db.rollback()
# 關(guān)閉游標(biāo)與數(shù)據(jù)庫連接
cursor.close()
db.close()
2.4.3败明、執(zhí)行修改操作
#修改
import pymysql
#創(chuàng)建連接
db = pymysql.connect(host='localhost',port=3306,user='root',
                     passwd='root',database='python_db')
# 使用 cursor() 方法創(chuàng)建一個游標(biāo)對象 cursor
cursor = db.cursor()
#創(chuàng)建SQL語句 cursor.execute執(zhí)行
sql = 'update Student set name = "%s" where id = %d' %('哈哈哈',3)
try:
    #執(zhí)行SQL語句
    cursor.execute(sql)
    # 提交執(zhí)行
    db.commit()
except:
    #發(fā)生異程溃回滾
    db.rollback()
# 關(guān)閉游標(biāo)與數(shù)據(jù)庫連接
cursor.close()
db.close()
2.4.4、執(zhí)行刪除操作
#刪除
import pymysql
#創(chuàng)建連接
db = pymysql.connect(host='localhost',port=3306,user='root',
                     passwd='root',database='python_db')
# 使用 cursor() 方法創(chuàng)建一個游標(biāo)對象 cursor
cursor = db.cursor()
#創(chuàng)建SQL語句 cursor.execute執(zhí)行
sql = 'delete from Student where id = %d' %(3)
try:
    #執(zhí)行SQL語句
    cursor.execute(sql)
    # 提交執(zhí)行
    db.commit()
except:
    #發(fā)生異郴渲觯回滾
    db.rollback()
# 關(guān)閉游標(biāo)與數(shù)據(jù)庫連接
cursor.close()
db.close()

2.5沥潭、關(guān)閉cursor與連接

及時資源的釋放嬉挡。

# 關(guān)閉游標(biāo)與數(shù)據(jù)庫連接
cursor.close()
db.close()

3汇恤、最后

Python與MySQL數(shù)據(jù)庫交互是比較簡單的因谎,添加/刪除/修改其實是一樣的颜懊,重在實踐。下次我們來說下多表的操作(查詢)匠璧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末患朱,一起剝皮案震驚了整個濱河市炊苫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌执虹,老刑警劉巖唠梨,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件当叭,死亡現(xiàn)場離奇詭異,居然都是意外死亡磺芭,警方通過查閱死者的電腦和手機醉箕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門讥裤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人间螟,你說我怎么就攤上這事∮矢” “怎么了溉奕?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵加勤,是天一觀的道長。 經(jīng)常有香客問我叠国,道長戴尸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任项棠,我火速辦了婚禮香追,結(jié)果婚禮上坦胶,老公的妹妹穿的比我還像新娘。我一直安慰自己顿苇,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布凑队。 她就那樣靜靜地躺著蜂科,像睡著了一般短条。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贡定,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天缓待,我揣著相機與錄音蚓耽,去河邊找鬼步悠。 笑死瘫镇,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的铣除。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼择卦,長吁一口氣:“原來是場噩夢啊……” “哼秉继!你這毒婦竟也來了泽铛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤厚宰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后澈蝙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撵幽,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡盐杂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了厉斟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片强衡。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缩搅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情硼瓣,我是刑警寧澤置谦,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站筑累,受9級特大地震影響丝蹭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奔穿,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一贱田、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蔬墩,春花似錦耗拓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽黄锤。三九已至食拜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間监婶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工煮盼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留僵控,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓报破,卻偏偏與公主長得像,于是被迫代替她去往敵國和親充易。 傳聞我的和親對象是個殘疾皇子荸型,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

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