MySQLdb簡單查詢

jopen 10年前發布 | 38K 次閱讀 MySQLdb MySQL 數據庫服務器

使用過Java的同行都知道,任何系統都離不開數據庫,而我們常常又不得不使用mysql,自然少不了jdbc的參與。同樣的道理使用Python的時候,同樣的有一個驅動程序叫MySQLdb,不得不抱緊它。或許,你可以不使用任何存在的驅動程序,直接去用命令連接 mysql。但使用命令并非長久之計,而且需要部署項目的服務端必須安裝mysql。這篇文章的目的就是用mysqldb實現簡單的操作。

什么是MySQLdb

簡單的說就是Python 連接 MySQL 的一個模塊或者驅動程序,使用起來也很方便。如果你使用過其他語言,例如Java那么jdbc肯定再熟悉不過來了,mysqldb在Python中正是充當了一個類似于jdbc的角色。


怎么使用

數據庫操作無非就是CRUD操作(Create,Retrieve,Update,Delete),即增刪改查操作。更加大范圍的講也就是寫和讀兩個操作。讀數據一般比較簡單,輸入正常的sql語句即可。但寫數據卻不得不考慮事務。無論是讀還是寫,前提都是連連上數據庫才可以操作,那么下面我們就從最基本的思路開始。

連接數據庫

import MySQLdb

connection = mdb.connect("127.0.0.1",3306, "root", "root","dbname")

這樣便意味著連上了數據庫。

執行sql 查詢語句

import MySQLdb as mdb

connection = mdb.connect("127.0.0.1",3306, "root", "root","test")
cursor = connection.cursor()
cursor.execute("select * from table")
result = cursor.fetchall()
cursor.close()   
connection.close()

此處注意cursor.close()這個方法的執行,如果在執行玩sql語句不執行這條語句進行關閉游標,也許你將會遇到下面的錯誤信息:

Commands out of sync; you can't run this command now

 

上面的查詢查到的信息知識簡單的輸出結果,如果想要輸出帶有列的json格式數據還需要進一步處理,其實也談不上處理,因為MySQLdb已經幫助我們想到了這點,僅僅需要在connection.cursor()中添加個參數mdb.cursors.DictCursor,如下:

import MySQLdb as mdb

connection = mdb.connect("127.0.0.1",3306, "root", "root","test")
cursor = connection.cursor(mdb.cursors.DictCursor)
cursor.execute("select * from table")
result = cursor.fetchall()
cursor.close()   
connection.close()

執行寫入語句

執行寫入語句,便是insert,update,delete操作語句。至于為什么要把寫入單獨列出來,就是因為事務這個東西。如果你用上面的案例去執行寫入語句,你將會發現,雖然執行顯示成功了,但是數據庫則沒有發生任何變化,不妨試試下面的例子:

import MySQLdb as mdb

connection = mdb.connect("127.0.0.1",3306, "root", "root","test")
cursor = connection.cursor(mdb.cursors.DictCursor)
cursor.execute("update table set field='xxx'")
cursor.commit() 
cursor.close()   
connection.close()

到目前為止應該是沒問題的,如果還是無法改變數據庫的變化,那你只能去看看這篇文章

其他操作

  • 查看所有數據庫

import MySQLdb as mdb

connection = mdb.connect("127.0.0.1",3306, "root", "root")
cursor = connection.cursor(mdb.cursors.DictCursor)
cursor.execute("show databases")
result = cursor.fetchall()
cursor.close()   
connection.close()
  • 查看庫中的表格

    注:不要使用use dbname;這樣的語句,直接在connect()方法中傳數據庫名便可以了

import MySQLdb as mdb

connection = mdb.connect("127.0.0.1",3306, "root", "root","test)
cursor = connection.cursor(mdb.cursors.DictCursor)
cursor.execute("show tables")
result = cursor.fetchall()
cursor.close()   
connection.close()

 

 來自:http://my.oschina.net/crazyharry/blog/339700

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!