Python+MySQL学习笔记(一)
Python其實是可以操縱數據庫的,想想如果能在python里寫SQL語句,從而直接達到操縱數據庫的目的,how cool!
Python的標準數據庫接口為Python DB-API,針對不同的數據庫要安裝不同的模塊,其中,MySQLdb就是用于鏈接MySQL數據庫的接口。
安裝MySQLdb,可以在?http://sourceforge.net/projects/mysql-python?上找到安裝包,下載安裝即可,無需多余的設置。
使用流程大致如下:
接下里分開記錄數據庫連接、創建數據庫表、數據庫插入操作、查詢操作、更新操作、刪除操作和錯誤處理
?
| # 導入模塊 import MySQLdb # 數據庫連接 db = MySQLdb.connect(host= "localhost", user='****', passwd='****', db='****') |
?
數據庫連接比較簡單,格式也都是固定的,注意在連接前,確保用戶擁有操縱某個數據庫的權限
?
| # -*- coding:utf-8 -*- import MySQLdb db = MySQLdb.connect(host = 'localhost', user = 'wpy', passwd = '2016', db = 'testdb') # 獲取游標 cursor = db.cursor() # cursor的execute方法可以執行SQL # 如果表EMPLOYEE存在則刪除 cursor.execute('DROP TABLE IF EXISTS EMPLOYEE') ? sql = 'CREATE TABLE EMPLOYEE(\ NAME VARCHAR(10) PRIMARY KEY,\ AGE INT,\ SEX VARCHAR(1))' cursor.execute(sql) # 關閉游標 cursor.close() # 關閉數據庫連接 db.close() |
?
在powershell中查看:
?
?
沒有問題!
?
?
| # -*- coding:utf-8 -*- import MySQLdb db = MySQLdb.connect(host = 'localhost', user = 'wpy', passwd = '2016', db = 'testdb') # 獲取游標 cursor = db.cursor() ? # 插入一條記錄 sql = "INSERT INTO EMPLOYEE(NAME, AGE, SEX) VALUES ('Simon', 20, 'M')" try: cursor.execute(sql) # 一定要commit()一下數據庫才會被更新 db.commit() except: db.rollback() ? # 插入多條記錄 values = [('Lucy', 21, 'W'), ('Tom', 19, 'M')] # 必須是%s,且沒有引號,%d是不行的 sql = "INSERT INTO EMPLOYEE(NAME, AGE, SEX) VALUES (%s, %s, %s)" try: cursor.executemany(sql, values) db.commit() except: db.rollback() ? # 關閉游標 cursor.close() # 關閉數據庫連接 db.close() |
?
結果如下:
?
?
?
| # -*- coding:utf-8 -*- import MySQLdb db = MySQLdb.connect(host = 'localhost', user = 'wpy', passwd = '2016', db = 'testdb') # 獲取游標 cursor = db.cursor() ? # SQL查詢語句 sql = "SELECT * FROM EMPLOYEE WHERE AGE >= '%d'" % (20) ? try: cursor.execute(sql) # 獲取所有記錄 rows = cursor.fetchall() for row in rows: print 'Name:', row[0], 'Age:', row[1], 'Sex:', row[2] except: print 'Error, return nothing.' # 關閉游標 cursor.close() # 關閉數據庫連接 db.close() |
?
結果如下:
?
Cursor還有兩個方法,fetchone()和fetchmany(size=)
fetchmany(size=)比較簡單,可以控制返回的行數
fetchone()的意義在于逐行獲取,因為每使用一次fetch,游標的位置就會發生改變,結果也看得出來,不過這也正是游標的意義所在了
?
?
| # -*- coding:utf-8 -*- import MySQLdb db = MySQLdb.connect(host = 'localhost', user = 'wpy', passwd = '2016', db = 'testdb') # 獲取游標 cursor = db.cursor() ? # SQL更新語句 sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE AGE >= '%d'" % (20) ? try: cursor.execute(sql) db.commit() except: db.rollback() # 關閉游標 cursor.close() # 關閉數據庫連接 db.close() |
?
數據庫更新操作還是比較簡單,注意別忘了db.commit()
?
| # -*- coding:utf-8 -*- import MySQLdb db = MySQLdb.connect(host = 'localhost', user = 'wpy', passwd = '2016', db = 'testdb') # 獲取游標 cursor = db.cursor() ? # SQL刪除語句 sql = "DELETE FROM EMPLOYEE WHERE AGE < '%d'" % (20) ? try: cursor.execute(sql) db.commit() except: db.rollback() # 關閉游標 cursor.close() # 關閉數據庫連接 db.close() |
?
比較簡單,不多說
?
總結:MySQLdb的語法還是比較簡單的,步驟也很單一,除了SQL不同之外,整體框架大體上沒有發生太大的改變。還是那句話,SQL是根本,只有掌握好SQL才能執行更為復雜的操作。
其實MySQLdb的語法遠不止這些,不過這些就已經夠用,如果想深入學習,可以參考官方網站http://dev.mysql.com/doc/connector-python/en/
?
參考資料:http://www.runoob.com/python/python-mysql.html
? ? ? ? ? ? ? ?http://www.cnblogs.com/coser/archive/2012/01/12/2320741.html
? ? ? ? ? ? ? ?http://blog.csdn.net/lengyue318/article/details/7913427
轉載于:https://www.cnblogs.com/lucifer25/p/5782007.html
總結
以上是生活随笔為你收集整理的Python+MySQL学习笔记(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特定页面隐藏导航栏
- 下一篇: Redis分布式部署,一致性hash