日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

python操作mysql_使用Python操作MySQL的一些基本方法

發布時間:2024/9/15 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python操作mysql_使用Python操作MySQL的一些基本方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前奏

為了能操作數據庫, 首先我們要有一個數據庫, 所以要首先安裝Mysql, 然后創建一個測試數據庫python_test用以后面的測試使用

1

CREATE DATABASE `python_test` CHARSET UTF8

導入數據庫模塊

1

import

連接數據庫

1

con= MySQLdb.connect(host="localhost", user="root", passwd="******",db="python_test",port=3306)

在這里, 我們雖然拿到了python的數據庫連接, 但是不能在這個對象上直接對數據庫進行操作, 還需要獲取對應的操作游標才能進行數據庫的操作,所以還需要進行下面的操作

1

cur= con.cursor()

創建表格

1

2

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才是真正執行完畢

1

con.commit()

到這里, 我們的表格才算真正創建完成

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

不過, 寫入數據的execute 稍有不同, 如下

更新表數據

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

1

2

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

con.commit()

這會直接寫入表中,但還有另外一種方式,

execute 可以接受兩個參數, 第一個參數是sql語句, 不過這個sql中的values的內容使用占位符%s表示,第二個參數是實際的寫入的values列表, 如下:

1

2

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

con.commit()

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

另外, cursor還有一個executemany, 參數和execute一樣, 不過第二個參數可以傳遞多列表值, 達到多次執行某個語句的效果

1

2

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

con.commit()

這里實際上就是執行了兩次插入操作

數據查詢

直接看例子

1

2

cur.execute("select * from stu_info")

stus= cur.fetchall()

#stus 已經是查詢的結果結合了, 格式如下:

1

2

3

4

(('Yi_Zhi_Yu',25,'man'),

('Tony',25,'man'),

('LiMei',26,'femal'),

('YuanYuan',28,'femal'))

tuple形式, 我們可以通過循環輸出

1

2

for stuin stus:

print "name: %s; age: %d; sex: %s" %(stu[0], stu[1], stu[2])

輸出:

1

2

3

4

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

那上面的查詢雖然得到了每行的數據, 但結果集中并沒有字段名, 如果要返回字段名, 如下操作:

1

2

3

cur= con.cursor(cursorclass=MySQLdb.cursors.DictCursor)

cur.execute("select * from stu_info")

cur.fetchall()

返回的結果集:

1

2

3

4

({'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: 以上皆為學習筆記, 難免有錯, 歡迎指正

總結

以上是生活随笔為你收集整理的python操作mysql_使用Python操作MySQL的一些基本方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。