首先要新建一個數據庫python
和一張數據表user
python
$ mysql -u root -p > create database python; > use database python; > create table user( username varchar(32), password varchar(32) );
In [1]: import MySQLdb # 獲取connection In [2]: conn = MySQLdb.connect( host = '127.0.0.1', port = 3306, user = 'root', passwd ='root', db = 'python', charset = 'utf8' ) # 獲取到cusor,全部的操做都要經過cursor進行 In [3]: cursor = conn.cursor()
In [4]: sql = "insert into user (username, password) values(%s, %s)" # 這裏咱們將要插入的數據存入一個tuple當中 In [5]: cursor.execute(sql, ('zxy', '123') Out[5]: 1L
由於這裏是要插入數據,因此要commit,可是我不進行commit好像也沒有問題。我查閱到的資料的解釋是,當curosr.execute()
執行成功的時候,執行conn.commit()
,可是執行失敗的時候,就執行conn.roolback()
,跟hibernate同樣,應該也是進行事務的回滾。還有一點,有的教程說應該設置conn.autocommit(False)
來關閉自動提交事務,這應該也就是我不要commit的緣由了吧。insert/update/delete這種更改數據庫的方式都要進行commit,可是select這類查詢操做就沒有必要了,由於select不會更改到數據庫。mysql
In [6]: conn.commit() # 我這裏省去了commit,好像也行 In [7]: cursor.execute(sql, ('yd', '456')) Out[7]: 1L
In [8]: sql = "select * from user" In [9]: cursor.execute(sql) Out[9]: 2L # fetchall是獲得全部的結果,你以能夠使用fetchone()來只查詢一條數據,或者fetchmany(size=n)來指定查詢的條數 In [10]: result = cursor.fetchall() In [11]: cursor.fetchall() Out[11]: ((u'zxy', u'123'), (u'yd', u'456')) # 還能夠打印出查詢到的條數以用來優雅的遍歷 In [12]: print(cursor.rowcount) 2 # 最後記得關閉conn和cursor In [13]: cursor.close() In [14]: conn.close()