
使用Python操作MySQL的一些基本方法
前奏
為了能操作數(shù)據(jù)庫, 首先我們要有一個數(shù)據(jù)庫, 所以要首先安裝Mysql, 然后創(chuàng)建一個測試數(shù)據(jù)庫python_test用以后面的測試使用
CREATE DATABASE `python_test` CHARSET UTF8
導(dǎo)入數(shù)據(jù)庫模塊
import MySQLdb
連接數(shù)據(jù)庫
con = MySQLdb.connect(host="localhost", user="root", passwd="******",db="python_test",port=3306)
在這里, 我們雖然拿到了python的數(shù)據(jù)庫連接, 但是不能在這個對象上直接對數(shù)據(jù)庫進(jìn)行操作, 還需要獲取對應(yīng)的操作游標(biāo)才能進(jìn)行數(shù)據(jù)庫的操作,所以還需要進(jìn)行下面的操作
cur = con.cursor()
創(chuàng)建表格
cur.execute('create table stu_info (name char(128) not null default "", age tinyint(3) not null default 0, sex enum("man","femal") not null default "man") engine=innodb charset=utf8')
#0L
cur.execute 返回執(zhí)行的sql 影響的行數(shù), 因為這里是創(chuàng)建數(shù)據(jù)庫, 所以是0L行
但到這里還并沒有真正執(zhí)行了sql語句, 必須使用MySQLdb.commit才是真正執(zhí)行完畢
con.commit()
到這里, 我們的表格才算真正創(chuàng)建完成
同理, 往表中寫數(shù)據(jù), 也是一樣的操作流程 execute ==> commit
不過, 寫入數(shù)據(jù)的execute 稍有不同, 如下
更新表數(shù)據(jù)
往表中寫入數(shù)據(jù)時, 執(zhí)行execute 方法, 有兩種方式, 一種是直接execute(sql), 然后commit 完成, sql里是寫入的sql 語句
cur.execute("insert into stu_info (name, age, sex) values ('Yi_Zhi_Yu',25,'man')")
con.commit()
這會直接寫入表中,但還有另外一種方式,
execute 可以接受兩個參數(shù), 第一個參數(shù)是sql語句, 不過這個sql中的values的內(nèi)容使用占位符%s表示,第二個參數(shù)是實際的寫入的values列表, 如下:
cur.execute("insert into stu_info (name, age, sex) values (%s,%s,%s)", ("Tony",25, "man"))
con.commit()
這種方式與第一中方式相比, 更清晰一些, 安全性也更好, 能有效防止sql注入
另外, cursor還有一個executemany, 參數(shù)和execute一樣, 不過第二個參數(shù)可以傳遞多列表值, 達(dá)到多次執(zhí)行某個語句的效果
cur.executemany("insert into stu_info (name, age, sex) values (%s,%s,%s)",(("LiMei",26,"femal"),("YuanYuan",28,"femal")))
con.commit()
這里實際上就是執(zhí)行了兩次插入操作
數(shù)據(jù)查詢
直接看例子
cur.execute("select * from stu_info")
stus = cur.fetchall()
#stus 已經(jīng)是查詢的結(jié)果結(jié)合了, 格式如下:
(('Yi_Zhi_Yu', 25, 'man'),
('Tony', 25, 'man'),
('LiMei', 26, 'femal'),
('YuanYuan', 28, 'femal'))
tuple形式, 我們可以通過循環(huán)輸出
for stu in stus:
print "name: %s; age: %d; sex: %s" %(stu[0], stu[1], stu[2])
輸出:
name: Yi_Zhi_Yu; age: 25; sex: man
name: Tony; age: 25; sex: man
name: LiMei; age: 26; sex: femal
name: YuanYuan; age: 28; sex: femal
那上面的查詢雖然得到了每行的數(shù)據(jù), 但結(jié)果集中并沒有字段名, 如果要返回字段名, 如下操作:
cur = con.cursor(cursorclass=MySQLdb.cursors.DictCursor)
cur.execute("select * from stu_info")
cur.fetchall()
返回的結(jié)果集:
({'age': 25, 'name': 'Yi_Zhi_Yu', 'sex': 'man'},
{'age': 25, 'name': 'Tony', 'sex': 'man'},
{'age': 26, 'name': 'LiMei', 'sex': 'femal'},
{'age': 28, 'name': 'YuanYuan', 'sex': 'femal'})
每個元素都是一個dict, 以key-value的形式展示了每個字段和對應(yīng)的值
總結(jié)
Python 中對數(shù)據(jù)的操作, 增刪改均要在指針對象執(zhí)行了sql語句后, 使用連接對象commit, 查詢的結(jié)果使用指針對象的fetch系列方法獲取
PS: 以上皆為學(xué)習(xí)筆記, 難免有錯, 歡迎指正
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03