Python操作MySql資料庫

2021-07-22 21:48:35 字數 3586 閱讀 7587

操作環境:python3.4,mysql5.6,pymysql

python開發mysql環境需要安裝python訪問mysql的資料庫介面程式,這裡我用的是python3.4,用的是pymysql。(注意python2.x的小夥伴需要用mysqldb)。這裡就不詳解安裝pymysql了,和安裝python的其他外掛程式是一樣一樣的。

測試環境:測試pymysql是否安裝成功,如下:

import pymysql

print(pymysql)

有結果如下所示,即為正常安裝:module 『pymysql』 from ……

測試成功後,來建立連線物件。用pymysql.connect。

connection物件支援的方法如下:

cursor():使用該連線建立並返回游標

commit():提交當前事務

rollback():回滾當前事務

close():關閉連線

import pymysql

conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456',db='lwl', charset='utf8')

cursor=conn.cursor() #建立游標

print(conn)

print(cursor)

cursor.close() #分別關閉資源

conn.cursor()

執行結果如下:

pymysql.connections.connection object at 0x01f450f0

pymysql.cursors.cursor object at 0x01f45110

游標物件—-cursor

支援以下方法:

execute(sql):執行乙個資料庫查詢和命令

fetchone():取的結果集的下一行

fetchmany(size):獲取結果集的下幾行

fetchall():獲取結果集中的剩下的所有行

(這裡fetch*()方法,可以移動rownumber,相當於指標,用來返回資料)

rowcount:最近一次execute返回資料的行數或者影響的行數

close():關閉游標物件

select例項演示:

建立connection—獲取cursor—-使用cursor.execute()執行select語句,使用cursor.fectch*()獲取並處理資料—-關閉cursor—-關閉connection。

import pymysql

conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456',db='lwl', charset='utf8')

cursor=conn.cursor()

sql="select * from user"

cursor.execute(sql)

rs=cursor.fetchall()

for row in rs:

print("userid=%s,username=%s" % row)

cursor.close()

conn.cursor()

insert/update/delete例項演示:

與select不同的是,需要判斷是否出錯,如果正常,需要用conn.commit()提交事務,否則使用conn.rollback()回滾事務。

例項一:

conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='lwl', charset='utf8')

cursor=conn.cursor()

sql_insert="insert

into

user(userid,username) value (8,'name8')"

sql_update="

update

user

set username='name71'

where userid=7

"sql_delete="

delete

from

user

where userid<3

"cursor.execute(sql_insert)

print(cursor.rowcount)

cursor.execute(sql_update)

print(cursor.rowcount)

cursor.execute(sql_delete)

print(cursor.rowcount)

#conn.commit()

cursor.close()

conn.cursor()

這裡執行了3條語句,分別看他們對資料庫資料的影響是1,1,2。可是,確發現資料庫的資料並沒有改變,所以,一定要注意需要加上conn.commit()來讓事務生效。

例項二:(判斷異常回滾)

import pymysql

conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456',db='lwl', charset='utf8')

cursor=conn.cursor()

sql_insert="insert into user(userid,username) value (8,'name8')"

sql_update="update user set username='name71' where userid=7"

sql_delete="delete from user where useri<3"

try:

cursor.execute(sql_insert)

print(cursor.rowcount)

cursor.execute(sql_update)

print(cursor.rowcount)

cursor.execute(sql_delete)

print(cursor.rowcount)

conn.commit()

except exception as e:

print(e)

conn.rollback()

cursor.close()

conn.cursor()

我改了userid,讓字段出錯。

執行結果如下:

1 1

(1054, 「unknown column 『useri』 in 『where clause』」)

並且因為設定了回滾事務,資料庫的資料不會改變。稍微解釋下為什麼要回滾事務。簡單來說,事務具有原子性,即兩邊操作都要同步,假設乙個銀行轉賬系統,a君給b君轉賬100元,會導致a君減100,b君加100。所謂原子性,就是說要麼這兩個操作同時進行成功,若失敗,肯定兩步操作都沒有進行。

python操作mysql查詢資料

首先需要連線資料庫,然後才查詢出資料。例如下表名字為 sinauser iduse id use name11 db12 2db233 db3class database def init self self.conn mysqldb.connect 連線資料庫 host 連線你要取出資料庫的ip,...

python操作MySQL資料庫

堅持每天學一點,每天積累一點點,作為自己每天的業餘收穫,這個文章是我在吃飯的期間寫的,利用自己零散的時間學了一下python操作mysql,所以整理一下。我採用的是mysqldb操作的mysql資料庫。先來乙個簡單的例子吧 import mysqldb try conn mysqldb.connec...

Python操作Mysql資料庫

coding utf8 author yangjing import mysqldb 查詢。def select host user root password port 3306,db sql connect mysqldb.connect host host,user user,passwd p...