摘要:使用進行數據庫的操作前奏為了能操作數據庫,首先我們要有一個數據庫,所以要首先安裝,然后創建一個測試數據庫用以后面的測試使用導入數據庫模塊連接數據庫在這里,我們雖然拿到了的數據庫連接,但是不能在這個對象上直接對數據庫進行操作,還需要獲取對應的
使用Python 進行數據庫的操作
前奏為了能操作數據庫, 首先我們要有一個數據庫, 所以要首先安裝Mysql, 然后創建一個測試數據庫python_test用以后面的測試使用
</>復制代碼
CREATE DATABASE `python_test` CHARSET UTF8
導入數據庫模塊
</>復制代碼
import MySQLdb
連接數據庫
</>復制代碼
con = MySQLdb.connect(host="localhost", user="root", passwd="******",db="python_test",port=3306)
在這里, 我們雖然拿到了python的數據庫連接, 但是不能在這個對象上直接對數據庫進行操作, 還需要獲取對應的操作游標才能進行數據庫的操作,所以還需要進行下面的操作
</>復制代碼
cur = con.cursor()
創建表格
</>復制代碼
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 返回執行的sql 影響的行數, 因為這里是創建數據庫, 所以是0L行
但到這里還并沒有真正執行了sql語句, 必須使用MySQLdb.commit才是真正執行完畢
</>復制代碼
con.commit()
到這里, 我們的表格才算真正創建完成
同理, 往表中寫數據, 也是一樣的操作流程 execute ==> commit
不過, 寫入數據的execute 稍有不同, 如下
更新表數據往表中寫入數據時, 執行execute 方法, 有兩種方式, 一種是直接execute(sql), 然后commit 完成, sql里是寫入的sql 語句
</>復制代碼
cur.execute("insert into stu_info (name, age, sex) values ("Yi_Zhi_Yu",25,"man")")
con.commit()
這會直接寫入表中,但還有另外一種方式.
execute 可以接受兩個參數, 第一個參數是sql語句, 不過這個sql中的values的內容使用占位符%s表示,第二個參數是實際的寫入的values列表, 如下:
</>復制代碼
cur.execute("insert into stu_info (name, age, sex) values (%s,%s,%s)", ("Tony",25, "man"))
con.commit()
這種方式與第一中方式相比, 更清晰一些, 安全性也更好, 能有效防止sql注入
另外, cursor還有一個executemany, 參數和execute一樣, 不過第二個參數可以傳遞多列表值, 達到多次執行某個語句的效果
</>復制代碼
cur.executemany("insert into stu_info (name, age, sex) values (%s,%s,%s)",(("LiMei",26,"femal"),("YuanYuan",28,"femal")))
con.commit()
這里實際上就是執行了兩次插入操作
數據查詢直接看例子
</>復制代碼
cur.execute("select * from stu_info")
stus = cur.fetchall()
#stus 已經是查詢的結果結合了, 格式如下:
</>復制代碼
(("Yi_Zhi_Yu", 25, "man"),
("Tony", 25, "man"),
("LiMei", 26, "femal"),
("YuanYuan", 28, "femal"))
tuple形式, 我們可以通過循環輸出
</>復制代碼
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
那上面的查詢雖然得到了每行的數據, 但結果集中并沒有字段名, 如果要返回字段名, 如下操作:
</>復制代碼
cur = con.cursor(cursorclass=MySQLdb.cursors.DictCursor)
cur.execute("select * from stu_info")
cur.fetchall()
返回的結果集:
</>復制代碼
({"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的形式展示了每個字段和對應的值
總結Python 中對數據的操作, 增刪改均要在指針對象執行了sql語句后, 使用連接對象commit, 查詢的結果使用指針對象的fetch系列方法獲取
PS: 以上皆為學習筆記, 難免有錯, 歡迎指正
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37593.html
摘要:的安裝博客補充知識年最新安裝教程,滾雪球學第四季。操作操作數據庫一般被程序員成為操作增刪改查,其中各個字符分別代表新增,讀取,更新,刪除。可以返回受影響行數,可以直接通過該值判斷是否修改成功。 ...
摘要:操作數據庫要對數據庫進行操作,需要先連接它。執行后返回值為受影響的行數。執行單條語句但是重復執行參數列表里的參數返回值為受影響的行數例如,要在數據表中插入一條記錄,使得,這樣做沒有報錯,并且返回一個結果,說明有一行記錄操作成功。 在上一講中已經連接了數據庫。就數據庫而言,連接之后就要對其操作。但是,目前那個名字叫做qiwsirtest的數據僅僅是空架子,沒有什么可操作的,要操作它,就必...
摘要:用來編寫網站,必須要能夠通過操作數據庫,所謂操作數據庫,就是通過實現對數據的連接,以及對記錄字段的各種操作。交互模式下操作數據庫之連接數據庫操作數據庫的前提是先有數據庫。先建立一個數據庫。 用Python來編寫網站,必須要能夠通過python操作數據庫,所謂操作數據庫,就是通過python實現對數據的連接,以及對記錄、字段的各種操作。上一講提到的那種操作方式,是看官直接通過交互模式來操...
摘要:用選擇要操作的數據庫,然后通過指針就可以操作這個數據庫了。這樣就在這個數據庫中創建了一個名為的表這是查看表的方式。樹欲靜而風不止,小偷在行動。所以,要特別提醒諸位注意。 通過python操作數據庫的行為,除了能夠完成前面兩講中的操作之外(當然,那是比較常用的),其實任何對數據庫進行的操作,都能夠通過python-mysqldb來實現。 建立數據庫 在《用python操作數據庫(1)...
摘要:模塊提供的是類似于接口的,而模塊在基礎上又做了進一步封裝,使之符合的數據庫規范。的數據庫規范建議了種不同的方式來構造,只支持其中的一種,代碼類似于的格式化操作。提交修改,回滾。異常發生時,調用進行回滾。 NOTE(2017-11-18): MySQLdb 不支持 Python 3,而 Python 3 是主流,所以就沒有學習的必要了。 環境:MySQL 5.6.27, Ubuntu 1...
閱讀 1912·2021-09-23 11:21
閱讀 1700·2019-08-29 17:27
閱讀 1056·2019-08-29 17:03
閱讀 726·2019-08-29 15:07
閱讀 1920·2019-08-29 11:13
閱讀 2381·2019-08-26 12:14
閱讀 920·2019-08-26 11:52
閱讀 1732·2019-08-23 17:09