python3.5+pymysql學習資料庫(2)
阿新 • • 發佈:2019-01-08
經過上一篇的努力,環境終於準備好了,現在可以開始學習sql語句對資料庫進行操作。
對資料庫進行增刪改之後,需要執行 cnn.commit()
查詢資料庫的內容後,可以用cursor.fetchall()和cursor.fetchone()獲取查詢結果,前者是獲取所有結果,後者只獲取一條。
簡單操作如下:
import pymysql cnn = pymysql.connect(host='localhost', port=3306, user='root', passwd='你自己設定的密碼', database='sys', charset='utf8') cursor = cnn.cursor() #建立資料庫edu sql1 = "CREATE DATABASE edu" #在資料庫中插入表單student sql2 = "CREATE TABLE `edu`.`student` (`SID` INT NOT NULL,`Sname` VARCHAR(45) NULL, `Sage` VARCHAR(45) NULL,`Ssex` VARCHAR(45) NULL,PRIMARY KEY (`SID`))" #給資料表student插入第一行資料 sql3 = "INSERT INTO edu.student VALUES(01,'Tom','1990-01-01','M')" try: cursor.execute(sql3) cnn.commit() except Exception as e: print("sql執行失敗,回滾") cnn.rollback() cursor.execute("SELECT * FROM edu.student") data = cursor.fetchall() print(data) cursor.close() cnn.close()
這麼辛苦的把資料庫搞起來就是為了給其他模組使用,還是封裝一下比較順眼。以後就只需要寫好sql語言,然後呼叫函式執行,不用再改來改去。
import pymysql class mysqlConnect(): """連線資料庫,並進行操作""" def __init__(self): self.cnn = pymysql.connect(host='localhost', port=3306, user='root', passwd='你自己設定的密碼', database='sys', charset='utf8') self.cursor = self.cnn.cursor() def db_close(self): self.cursor.close() # 關閉遊標 self.cnn.close() # 關閉資料連線 def db_execute(self, sql): """執行sql語句並提交:包含增、刪、改""" try: print('執行的sql語句為:', sql) self.cursor.execute(sql) self.cnn.commit() except Exception as e: self.cnn.rollback() print('sql語句執行錯誤,進行回滾') def db_select(self, sql): """執行查詢sql語句,並返回所有查詢結果""" try: self.cursor.execute(sql) data = self.cursor.fetchall() return data except Exception as e: print('查詢失敗')
改完以後看著順眼多了,現在練習多寫幾個插入語句。堅持沒有複製、貼上,短短几行程式碼就出現2次缺少單引號導致執行錯誤後回滾,看來還是不夠細心,需要多多練習。
用上面的函式執行sql操作程式碼如下:
if __name__ == '__main__': sql1 = "INSERT INTO edu.student VALUES('02','Jimmy','1990-1-19','M')" sql2 = "INSERT INTO edu.student VALUES('03','Lucy','1989-2-19','F')" sql3 = "INSERT INTO edu.student VALUES('04','Kate','1991-7-6','F')" sql4 = "INSERT INTO edu.student VALUES('05','Seven','1990-12-4','M')" sql99 = "Select * from edu.student" connect = mysqlConnect() connect.db_execute(sql4) data = connect.db_select(sql99) print("輸出資料庫結果") for iterm in data: print(iterm)
插入最後一行資料後,輸出結果如下:
/Users/tracy/PycharmProjects/stu/venv/bin/python /Users/tracy/PycharmProjects/doubanApiTest/z_stu/stu_db/edu.py
執行的sql語句為: INSERT INTO edu.student VALUES('05','Seven','1990-12-4','M')
輸出資料庫結果
(1, 'zhaolei', '1990-01-01', 'M')
(2, 'Jimmy', '1990-1-19', 'M')
(3, 'Lucy', '1989-2-19', 'F')
(4, 'Kate', '1991-7-6', 'F')
(5, 'Seven', '1990-12-4', 'M')
Process finished with exit code 0
到這裡就可以專心學習sql語言了,多多練習才能記錄的牢。