成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Python Mysql 數(shù)據(jù)庫(kù)操作

Coly / 2346人閱讀

摘要:使用進(jìn)行數(shù)據(jù)庫(kù)的操作前奏為了能操作數(shù)據(jù)庫(kù),首先我們要有一個(gè)數(shù)據(jù)庫(kù),所以要首先安裝,然后創(chuàng)建一個(gè)測(cè)試數(shù)據(jù)庫(kù)用以后面的測(cè)試使用導(dǎo)入數(shù)據(jù)庫(kù)模塊連接數(shù)據(jù)庫(kù)在這里,我們雖然拿到了的數(shù)據(jù)庫(kù)連接,但是不能在這個(gè)對(duì)象上直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,還需要獲取對(duì)應(yīng)的

使用Python 進(jìn)行數(shù)據(jù)庫(kù)的操作

前奏

為了能操作數(shù)據(jù)庫(kù), 首先我們要有一個(gè)數(shù)據(jù)庫(kù), 所以要首先安裝Mysql, 然后創(chuàng)建一個(gè)測(cè)試數(shù)據(jù)庫(kù)python_test用以后面的測(cè)試使用

    CREATE DATABASE `python_test` CHARSET UTF8
導(dǎo)入數(shù)據(jù)庫(kù)模塊
    import MySQLdb
連接數(shù)據(jù)庫(kù)
    con = MySQLdb.connect(host="localhost", user="root", passwd="******",db="python_test",port=3306)

在這里, 我們雖然拿到了python的數(shù)據(jù)庫(kù)連接, 但是不能在這個(gè)對(duì)象上直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作, 還需要獲取對(duì)應(yīng)的操作游標(biāo)才能進(jìn)行數(shù)據(jù)庫(kù)的操作,所以還需要進(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ù), 因?yàn)檫@里是創(chuàng)建數(shù)據(jù)庫(kù), 所以是0L

但到這里還并沒(méi)有真正執(zhí)行了sql語(yǔ)句, 必須使用MySQLdb.commit才是真正執(zhí)行完畢

    con.commit()

到這里, 我們的表格才算真正創(chuàng)建完成

同理, 往表中寫數(shù)據(jù), 也是一樣的操作流程 execute ==> commit

不過(guò), 寫入數(shù)據(jù)的execute 稍有不同, 如下

更新表數(shù)據(jù)

往表中寫入數(shù)據(jù)時(shí), 執(zhí)行execute 方法, 有兩種方式, 一種是直接execute(sql), 然后commit 完成, sql里是寫入的sql 語(yǔ)句

    cur.execute("insert into stu_info (name, age, sex) values ("Yi_Zhi_Yu",25,"man")")
    con.commit()

這會(huì)直接寫入表中,但還有另外一種方式.

execute 可以接受兩個(gè)參數(shù), 第一個(gè)參數(shù)是sql語(yǔ)句, 不過(guò)這個(gè)sql中的values的內(nèi)容使用占位符%s表示,第二個(gè)參數(shù)是實(shí)際的寫入的values列表, 如下:

    cur.execute("insert into stu_info (name, age, sex) values (%s,%s,%s)", ("Tony",25, "man"))
    con.commit()

這種方式與第一中方式相比, 更清晰一些, 安全性也更好, 能有效防止sql注入

另外, cursor還有一個(gè)executemany, 參數(shù)和execute一樣, 不過(guò)第二個(gè)參數(shù)可以傳遞多列表值, 達(dá)到多次執(zhí)行某個(gè)語(yǔ)句的效果

    cur.executemany("insert into stu_info (name, age, sex) values (%s,%s,%s)",(("LiMei",26,"femal"),("YuanYuan",28,"femal")))
    con.commit()

這里實(shí)際上就是執(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形式, 我們可以通過(guò)循環(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é)果集中并沒(méi)有字段名, 如果要返回字段名, 如下操作:

    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"})

每個(gè)元素都是一個(gè)dict, 以key-value的形式展示了每個(gè)字段和對(duì)應(yīng)的值

總結(jié)

Python 中對(duì)數(shù)據(jù)的操作, 增刪改均要在指針對(duì)象執(zhí)行了sql語(yǔ)句后, 使用連接對(duì)象commit, 查詢的結(jié)果使用指針對(duì)象的fetch系列方法獲取

PS: 以上皆為學(xué)習(xí)筆記, 難免有錯(cuò), 歡迎指正

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://hztianpu.com/yun/37593.html

相關(guān)文章

  • python 數(shù)據(jù)庫(kù)編程,這篇是針對(duì) mysql 的,滾雪球?qū)WPython第4季第13篇

    摘要:的安裝博客補(bǔ)充知識(shí)年最新安裝教程,滾雪球?qū)W第四季。操作操作數(shù)據(jù)庫(kù)一般被程序員成為操作增刪改查,其中各個(gè)字符分別代表新增,讀取,更新,刪除??梢苑祷厥苡绊懶袛?shù),可以直接通過(guò)該值判斷是否修改成功。 ...

    xiaowugui666 評(píng)論0 收藏0
  • [零基礎(chǔ)學(xué)python]用Python操作數(shù)據(jù)庫(kù)(1)

    摘要:操作數(shù)據(jù)庫(kù)要對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,需要先連接它。執(zhí)行后返回值為受影響的行數(shù)。執(zhí)行單條語(yǔ)句但是重復(fù)執(zhí)行參數(shù)列表里的參數(shù)返回值為受影響的行數(shù)例如,要在數(shù)據(jù)表中插入一條記錄,使得,這樣做沒(méi)有報(bào)錯(cuò),并且返回一個(gè)結(jié)果,說(shuō)明有一行記錄操作成功。 在上一講中已經(jīng)連接了數(shù)據(jù)庫(kù)。就數(shù)據(jù)庫(kù)而言,連接之后就要對(duì)其操作。但是,目前那個(gè)名字叫做qiwsirtest的數(shù)據(jù)僅僅是空架子,沒(méi)有什么可操作的,要操作它,就必...

    lolomaco 評(píng)論0 收藏0
  • [零基礎(chǔ)學(xué)python]通過(guò)Python連接數(shù)據(jù)庫(kù)

    摘要:用來(lái)編寫網(wǎng)站,必須要能夠通過(guò)操作數(shù)據(jù)庫(kù),所謂操作數(shù)據(jù)庫(kù),就是通過(guò)實(shí)現(xiàn)對(duì)數(shù)據(jù)的連接,以及對(duì)記錄字段的各種操作。交互模式下操作數(shù)據(jù)庫(kù)之連接數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)的前提是先有數(shù)據(jù)庫(kù)。先建立一個(gè)數(shù)據(jù)庫(kù)。 用Python來(lái)編寫網(wǎng)站,必須要能夠通過(guò)python操作數(shù)據(jù)庫(kù),所謂操作數(shù)據(jù)庫(kù),就是通過(guò)python實(shí)現(xiàn)對(duì)數(shù)據(jù)的連接,以及對(duì)記錄、字段的各種操作。上一講提到的那種操作方式,是看官直接通過(guò)交互模式來(lái)操...

    hover_lew 評(píng)論0 收藏0
  • [零基礎(chǔ)學(xué)python]用Python操作數(shù)據(jù)庫(kù)(3)

    摘要:用選擇要操作的數(shù)據(jù)庫(kù),然后通過(guò)指針就可以操作這個(gè)數(shù)據(jù)庫(kù)了。這樣就在這個(gè)數(shù)據(jù)庫(kù)中創(chuàng)建了一個(gè)名為的表這是查看表的方式。樹欲靜而風(fēng)不止,小偷在行動(dòng)。所以,要特別提醒諸位注意。 通過(guò)python操作數(shù)據(jù)庫(kù)的行為,除了能夠完成前面兩講中的操作之外(當(dāng)然,那是比較常用的),其實(shí)任何對(duì)數(shù)據(jù)庫(kù)進(jìn)行的操作,都能夠通過(guò)python-mysqldb來(lái)實(shí)現(xiàn)。 建立數(shù)據(jù)庫(kù) 在《用python操作數(shù)據(jù)庫(kù)(1)...

    BDEEFE 評(píng)論0 收藏0
  • 【過(guò)時(shí)】MySQLdb:Python 操作 MySQL 數(shù)據(jù)庫(kù)

    摘要:模塊提供的是類似于接口的,而模塊在基礎(chǔ)上又做了進(jìn)一步封裝,使之符合的數(shù)據(jù)庫(kù)規(guī)范。的數(shù)據(jù)庫(kù)規(guī)范建議了種不同的方式來(lái)構(gòu)造,只支持其中的一種,代碼類似于的格式化操作。提交修改,回滾。異常發(fā)生時(shí),調(diào)用進(jìn)行回滾。 NOTE(2017-11-18): MySQLdb 不支持 Python 3,而 Python 3 是主流,所以就沒(méi)有學(xué)習(xí)的必要了。 環(huán)境:MySQL 5.6.27, Ubuntu 1...

    mj 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<