Python Mysql 資料庫操作

2021-09-20 00:26:15 字數 2836 閱讀 2909

使用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, *** 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, ***) values ('yi_zhi_yu',25,'man')")

con.commit()

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

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

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

con.commit()

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

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

cur.executemany("insert into stu_info (name, age, ***) 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; ***: %s" %(stu[0], stu[1], stu[2])

輸出:

name: yi_zhi_yu; age: 25; ***: man

name: tony; age: 25; ***: man

name: limei; age: 26; ***: femal

name: yuanyuan; age: 28; ***: femal

那上面的查詢雖然得到了每行的資料, 但結果集中並沒有欄位名, 如果要返回欄位名, 如下操作:

cur = con.cursor(cursorclass=mysqldb.cursors.dictcursor)

cur.execute("select * from stu_info")

cur.fetchall()

返回的結果集:

(,,,

)

每個元素都是乙個dict, 以key-value的形式展示了每個欄位和對應的值

python 中對資料的操作, 增刪改均要在指標物件執行了sql語句後, 使用連線物件commit, 查詢的結果使用指標物件的fetch系列方法獲取

ps: 以上皆為學習筆記, 難免有錯, 歡迎指正

Python MySQL 建立資料庫

要在mysql中建立資料庫,可使用 create database 語句 示例 建立乙個名為 mydatabase 的資料庫 import mysql.connector mydb mysql.connector.connect host localhost user 你的使用者名稱 passwd ...

Python MySQL 建立資料庫

建立資料庫 要在mysql中建立資料庫,可使用 create database 語句 示例建立乙個名為 mydatabase 的資料庫 import mysql.connector mydb mysql.connector.connect host localhost user 你的使用者名稱 pa...

python MySQL訪問資料庫

python語言的易用性不言而喻,使用python訪問資料庫也及其方便。簡單給出乙個示例程式。在使用connect函式連線資料庫時,需要給出資料庫的相關連線方式,比如位址 host 埠 port 使用者名稱 user 密碼 passwd 以及資料庫的名稱 db coding utf 8 import...