操作環境:python3.4,mysql5.6,pymysql
python開發mysql環境需要安裝python訪問mysql的資料庫介面程式,這裡我用的是python3.4,用的是pymysql。(注意python2.x的小夥伴需要用mysqldb)。這裡就不詳解安裝pymysql了,和安裝python的其他外掛程式是一樣一樣的。
測試環境:測試pymysql是否安裝成功,如下:
有結果如下所示,即為正常安裝:module 『pymysql』 from ……import pymysql
print(pymysql)
測試成功後,來建立連線物件。用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。
insert/update/delete例項演示: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()
與select不同的是,需要判斷是否出錯,如果正常,需要用conn.commit()提交事務,否則使用conn.rollback()回滾事務。
例項一:
這裡執行了3條語句,分別看他們對資料庫資料的影響是1,1,2。可是,確發現資料庫的資料並沒有改變,所以,一定要注意需要加上conn.commit()來讓事務生效。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()
例項二:(判斷異常回滾)
我改了userid,讓字段出錯。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()
執行結果如下:
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...