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语言了,多多练习才能记录的牢。

猜你喜欢

转载自blog.csdn.net/liying15/article/details/85952720