成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

Coly / 2297人閱讀

摘要:使用進行數(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

相關(guān)文章

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

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

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

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

    lolomaco 評論0 收藏0
  • [零基礎(chǔ)學python]通過Python連接數(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ù)的連接,以及對記錄、字段的各種操作。上一講提到的那種操作方式,是看官直接通過交互模式來操...

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

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

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

    摘要:模塊提供的是類似于接口的,而模塊在基礎(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...

    mj 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<