1. 程式人生 > >python3.5+pymysql學習資料庫(2)

python3.5+pymysql學習資料庫(2)

經過上一篇的努力,環境終於準備好了,現在可以開始學習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語言了,多多練習才能記錄的牢。