PyMySQL

1.安装PyMySQL

cmd 打开Windows命令界面,输入pip install PyMySQL安装

pip install PyMySQL

2.连接数据库

通过pymysql库的connect()方法尝试连接数据库。并传入主机名+端口号、用户名、密码、要连接的数据库等参数。

# 导入mysql库
import pymysql

# 打开数据库连接 传入连接数据库的几个参数:
# 数据库服务器所在的主机+数据库的端口号
# 登录数据库的用户名
# 登录数据库的密码
# 在mysql中连接的数据库
db = pymysql.connect('localhost', 'root', '123', 'school')

# 对数据库进行增删改查等操作
# 。。。。。。。

# 关闭数据库连接
db.close()

3.创建表

# 导入mysql库
import pymysql

# 打开数据库连接 传入连接数据库的几个参数:
# 数据库服务器所在的主机+数据库的端口号
# 登录数据库的用户名
# 登录数据库的密码
# 在mysql中连接的数据库
db = pymysql.connect('localhost', 'root', '123', 'school')

# 获取一个游标(数据库操作的对象)
cursor = db.cursor()

# 需要执行的SQL语句
sql = '''CREATE TABLE IF NOT EXISTS course(
  c_id INT PRIMARY KEY AUTO_INCREMENT,
  c_name VARCHAR(20),
  c_weight INT
)'''

# 执行SQL语句
cursor.execute(sql)

# 关闭数据库连接
db.close()

4.插入操作

# 导入mysql库
import pymysql

# 打开数据库连接 传入连接数据库的几个参数:
# 数据库服务器所在的主机+数据库的端口号
# 登录数据库的用户名
# 登录数据库的密码
# 在mysql中连接的数据库
db = pymysql.connect('localhost', 'root', '123', 'school')

# 获取一个游标(数据库操作的对象)
cursor = db.cursor()

# 对数据库进行插入操作
sql = 'INSERT INTO course(c_name, c_weight) VALUES("java", 2)'

try:
    # 执行SQL语句
    cursor.execute(sql)
    # 提交数据库事务处理
    db.commit()
except:
    # 如果出现错误就回滚
    db.rollback()
    
# 关闭数据库连接
db.close()

5.删除操作

# 导入mysql库
import pymysql

# 打开数据库连接 传入连接数据库的几个参数:
# 数据库服务器所在的主机+数据库的端口号
# 登录数据库的用户名
# 登录数据库的密码
# 在mysql中连接的数据库
db = pymysql.connect('localhost', 'root', '123', 'school')

# 获取一个游标(数据库操作的对象)
cursor = db.cursor()

# 对数据库进行插入操作
del_course = 'python'
sql = 'DELETE FROM course WHERE c_name = "%s"' % del_course

try:
    # 执行SQL语句
    cursor.execute(sql)
    # 提交数据库事务处理
    db.commit()
except:
    # 如果出现错误就回滚
    db.rollback()

# 关闭数据库连接
db.close()

6.修改操作

# 导入mysql库
import pymysql

# 打开数据库连接 传入连接数据库的几个参数:
# 数据库服务器所在的主机+数据库的端口号
# 登录数据库的用户名
# 登录数据库的密码
# 在mysql中连接的数据库
db = pymysql.connect('localhost', 'root', '123', 'school')

# 获取一个游标(数据库操作的对象)
cursor = db.cursor()

# 对数据库进行插入操作
update_course, new_weight = 'java', 5
sql = 'UPDATE course SET c_weight = %d WHERE c_name = "%s"' % ( new_weight, update_course)

try:
    # 执行SQL语句
    cursor.execute(sql)
    # 提交数据库事务处理
    db.commit()
except:
    # 如果出现错误就回滚
    db.rollback()

# 关闭数据库连接
db.close()

7.查询操作

注意:查询操作有一点特点:

execute()之后,需要通过

  fetchall():获取所有的查询结果

  fetchone():获取一个查询结果

  rowcount:返回结果数(这是个属性)

# 导入mysql库
import pymysql

# 打开数据库连接 传入连接数据库的几个参数:
# 数据库服务器所在的主机+数据库的端口号
# 登录数据库的用户名
# 登录数据库的密码
# 在mysql中连接的数据库
db = pymysql.connect('localhost', 'root', '123', 'school')

# 获取一个游标(数据库操作的对象)
cursor = db.cursor()

# 对数据库进行插入操作
sql = 'SELECT * FROM course'

try:
    # 执行SQL语句
    cursor.execute(sql)
    # 获取所有记录的列表
    results = cursor.fetchall()
    #print(type(results)) # typle
    for row in results:
        c_id = row[0]
        c_name = row[1]
        c_weight = row[2]
        print('name = %s, weight = %d' % (c_name, c_weight))
    
    # 提交数据库事务处理
    db.commit()
except:
    # 如果出现错误就回滚
    db.rollback()

# 关闭数据库连接
db.close()

8.封装

考虑到数据库的增删改查操作中,大部分的内容都是类似的,考虑封装到一个类中

创建MySQLHelper.py文件,编写数据库辅助类。

 

# 导入mysql库
import pymysql

class MySQLHelper(object):
    def __init__(self, host, port, user, passwd, db, charset='utf8'):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = passwd
        self.db = db
        self.charset = charset


    # 数据库连接
    def connect(self):
        # 打开数据库连接
        self.conn = pymysql.connect(host=self.host, port=self.port, user=self.user, passwd=self.passwd, db=self.db, charset=self.charset)
        # 获取一个游标(数据库操作的对象)
        self.cursor =self.conn.cursor()

    # 关闭数据库连接
    def close(self):
        self.cursor.close()
        self.conn.close()

    # 增加
    # INSERT INTO course(c_name, c_weight) VALUES(%s, %d)
    def insert(self, sql, param=()):
        return self.__edit(sql, param)

    # 删除
    def delete(self, sql, param=()):
        return self.__edit(sql, param)
    
    # 修改
    def update(self, sql, param=()):
        return self.__edit(sql, param)
    
    # 增删改通用的代码
    def __edit(self, sql, param=()):
        count = 0
        try:
            # 连接数据库
            self.connect()
            # 执行SQL语句
            count = self.cursor.execute(sql, param)
            # 提交数据库事务处理
            self.conn.commit()
        except Exception as e:
            # 如果出现错误就回滚
            print(e)
            self.conn.rollback()
    
        # 关闭数据库连接
        self.close()
        return count
    
    # 查询所有
    def get_all(self, sql, param=()):
        result = () # 返回的结果是一个元组
        try:
            # 连接数据库
            self.connect()
            # 执行SQL语句
            self.cursor.execute(sql, param)
            # 获取查询的内容
            result = self.cursor.fetchall()
            # 提交数据库事务处理
            self.conn.commit()
        except Exception as e:
            # 如果出现错误就回滚
            print(e)
            self.conn.rollback()
    
        # 关闭数据库连接
        self.close()
        
        return result 
    
    # 查询一个
    def get_one(self, sql, param=()):
        result = () # 返回的结果是一个元组
        try:
            # 连接数据库
            self.connect()
            # 执行SQL语句
            self.cursor.execute(sql, param)
            # 获取查询的内容
            result = self.cursor.fetchone()
            # 提交数据库事务处理
            self.conn.commit()
        except Exception as e:
            # 如果出现错误就回滚
            print(e)
            self.conn.rollback()
    
        # 关闭数据库连接
        self.close()

 

posted @ 2020-05-27 11:15  独剑飞行天下  阅读(343)  评论(0)    收藏  举报