摘要:使用進行數(shù)據(jù)庫的操作前奏為了能操作數(shù)據(jù)庫,首先我們要有一個數(shù)據(jù)庫,所以要首先安裝,然后創(chuàng)建一個測試數(shù)據(jù)庫用以后面的測試使用導(dǎo)入數(shù)據(jù)庫模塊連接數(shù)據(jù)庫在這里,我們雖然拿到了的數(shù)據(jù)庫連接,但是不能在這個對象上直接對數(shù)據(jù)庫進行操作,還需要獲取對應(yīng)的
使用Python 進行數(shù)據(jù)庫的操作
前奏為了能操作數(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ù)庫進行操作, 還需要獲取對應(yīng)的操作游標才能進行數(shù)據(jù)庫的操作,所以還需要進行下面的操作
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ù)可以傳遞多列表值, 達到多次執(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: 以上皆為學習筆記, 難免有錯, 歡迎指正
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/37593.html
摘要:的安裝博客補充知識年最新安裝教程,滾雪球?qū)W第四季。操作操作數(shù)據(jù)庫一般被程序員成為操作增刪改查,其中各個字符分別代表新增,讀取,更新,刪除??梢苑祷厥苡绊懶袛?shù),可以直接通過該值判斷是否修改成功。 ...
摘要:操作數(shù)據(jù)庫要對數(shù)據(jù)庫進行操作,需要先連接它。執(zhí)行后返回值為受影響的行數(shù)。執(zhí)行單條語句但是重復(fù)執(zhí)行參數(shù)列表里的參數(shù)返回值為受影響的行數(shù)例如,要在數(shù)據(jù)表中插入一條記錄,使得,這樣做沒有報錯,并且返回一個結(jié)果,說明有一行記錄操作成功。 在上一講中已經(jīng)連接了數(shù)據(jù)庫。就數(shù)據(jù)庫而言,連接之后就要對其操作。但是,目前那個名字叫做qiwsirtest的數(shù)據(jù)僅僅是空架子,沒有什么可操作的,要操作它,就必...
摘要:用來編寫網(wǎng)站,必須要能夠通過操作數(shù)據(jù)庫,所謂操作數(shù)據(jù)庫,就是通過實現(xiàn)對數(shù)據(jù)的連接,以及對記錄字段的各種操作。交互模式下操作數(shù)據(jù)庫之連接數(shù)據(jù)庫操作數(shù)據(jù)庫的前提是先有數(shù)據(jù)庫。先建立一個數(shù)據(jù)庫。 用Python來編寫網(wǎng)站,必須要能夠通過python操作數(shù)據(jù)庫,所謂操作數(shù)據(jù)庫,就是通過python實現(xiàn)對數(shù)據(jù)的連接,以及對記錄、字段的各種操作。上一講提到的那種操作方式,是看官直接通過交互模式來操...
摘要:用選擇要操作的數(shù)據(jù)庫,然后通過指針就可以操作這個數(shù)據(jù)庫了。這樣就在這個數(shù)據(jù)庫中創(chuàng)建了一個名為的表這是查看表的方式。樹欲靜而風不止,小偷在行動。所以,要特別提醒諸位注意。 通過python操作數(shù)據(jù)庫的行為,除了能夠完成前面兩講中的操作之外(當然,那是比較常用的),其實任何對數(shù)據(jù)庫進行的操作,都能夠通過python-mysqldb來實現(xiàn)。 建立數(shù)據(jù)庫 在《用python操作數(shù)據(jù)庫(1)...
摘要:模塊提供的是類似于接口的,而模塊在基礎(chǔ)上又做了進一步封裝,使之符合的數(shù)據(jù)庫規(guī)范。的數(shù)據(jù)庫規(guī)范建議了種不同的方式來構(gòu)造,只支持其中的一種,代碼類似于的格式化操作。提交修改,回滾。異常發(fā)生時,調(diào)用進行回滾。 NOTE(2017-11-18): MySQLdb 不支持 Python 3,而 Python 3 是主流,所以就沒有學習的必要了。 環(huán)境:MySQL 5.6.27, Ubuntu 1...
閱讀 1919·2021-09-23 11:21
閱讀 1704·2019-08-29 17:27
閱讀 1062·2019-08-29 17:03
閱讀 729·2019-08-29 15:07
閱讀 1928·2019-08-29 11:13
閱讀 2385·2019-08-26 12:14
閱讀 931·2019-08-26 11:52
閱讀 1736·2019-08-23 17:09