python与mysql数据库_python与MySQL数据库
python與MySQL數(shù)據(jù)庫
我使用的軟件:python2.7 + MySQL+ Navicat for MySQL + Atom
注意:你的數(shù)據(jù)庫表格類型的引擎為:InnoDB ;字符集:utf8 ;排序規(guī)則:utf8_general_ci
Python開發(fā)MySQL的思想:
圖片來自慕課網(wǎng)視頻截圖:
其中我使用的編輯器是Atom,MySQL數(shù)據(jù)庫的客戶端是Navicat for MySQL。
python DB API
思想:
由connection建立數(shù)據(jù)庫連接
由cursor執(zhí)行SQL語句和獲取數(shù)據(jù)
具體操作:
創(chuàng)建connection對象
獲取cursor
使用cursor執(zhí)行SQL語句
使用cursor獲取數(shù)據(jù),并判斷執(zhí)行狀態(tài)
提交事務(wù)或者回滾事務(wù)
關(guān)閉cursor ,關(guān)閉connection
創(chuàng)建connection對象:
通過下面這一行代碼進(jìn)行與數(shù)據(jù)庫的連接。
import MySQLdb
conn = MySQLdb.Connect(
host = '127.0.0.1',
port = 3306,
user = 'your user_name',
passwd = 'your passwd',
db = 'your db_name',
charset = 'utf8'
)
獲取cursor:
cursor 是一個游標(biāo),用于指定數(shù)據(jù)庫的表中的某一行
cursor = conn.cursor()
使用cursor執(zhí)行SQL語句:
cursor執(zhí)行SQL語句就相當(dāng)于在數(shù)據(jù)庫中的查詢操作:
sql_sentence = 'your sql_sentence'
cursor.execute(sql_sentence)
通過上面這行代碼既可以對數(shù)據(jù)庫進(jìn)行增,刪,改,查等操作
使用cursor獲取數(shù)據(jù),并判斷執(zhí)行狀態(tài):
獲取數(shù)據(jù)有三種方式:
rs = cursor.fetchall() //獲取當(dāng)前游標(biāo)往下的所有數(shù)據(jù)
rs = cursor.fetchone()//獲取當(dāng)前游標(biāo)所在行的數(shù)據(jù)
rs = cursor.fetchmany(x) //獲取當(dāng)前游標(biāo)往下 x 行的數(shù)據(jù)
此后即可以通過對rs的操作,輸出我們所需要的數(shù)據(jù),例如:
for row in rs:
print "userid=%s,username=%s" %row
提交事務(wù)或者回滾事務(wù):
事務(wù)的概念就是一組需要同時完成的事情,例如往a轉(zhuǎn)錢給b,那么就需要有同時判斷兩個賬戶是否存在,a是否有足夠的錢,若有,a扣款的同時b要存款等。
這是一系列要同時考慮的事情,如果在中間不滿足條件,則需要回滾事務(wù),即返回到之前的初始狀態(tài)。
conn.commit() //提交事務(wù)
conn.rollback() //回滾事務(wù)
在此,我們通常將某一事務(wù)放在一個try的代碼塊中,當(dāng)出現(xiàn)錯誤的時候,在except塊中報錯以及回滾事務(wù):
def transfer(self,sourse_acctid,target_acctid,money): // 很普通的一個轉(zhuǎn)錢的函數(shù)
try:
self.check_acct_available(sourse_acctid)
self.check_acct_available(target_acctid)
self.has_enough_money(sourse_acctid,money)
self.reduce_money(sourse_acctid,money)
self.add_money(target_acctid,money) //在此列函數(shù)調(diào)用中,如果出現(xiàn)錯誤,會將錯誤信息給Exception,同時回滾事務(wù);如果順利執(zhí)行,則進(jìn)行下一步:提交事務(wù)。
self.conn.commit() //提交事務(wù)
except Exception as e:
self.conn.rollback() //回滾事務(wù)
raise e //報錯
關(guān)閉cursor,關(guān)閉connection:
為了防止浪費(fèi)資源,在每次游標(biāo)進(jìn)行完操作后,都要關(guān)閉游標(biāo),在對數(shù)據(jù)庫完成操作后要關(guān)閉數(shù)據(jù)庫連接。
cursor.close()
conn.close()
注意事項:
利用try代碼塊進(jìn)行SQL操作
每次操作記得返回錯誤信息,以便調(diào)試
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的python与mysql数据库_python与MySQL数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 优麒麟桌面闪烁_UKUI 桌面环境登陆
- 下一篇: 文件拖放的一种简洁方法