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