您的位置:首页 > 编程语言 > Python开发

简单干货,在python中 PyMySQL 的各种小白用法!

2020-06-10 04:14 686 查看

mysql的入门使用:

mysql笔记, 记录一些常用的东西, 学习ing

简单的教学:

  • 功能简单封装:
  • 基本使用:

    • 开启mysql服务 net start mysql

    • 关闭mysql服务 net stop mysql

    • 进入mysql服务 mysql -u root -p root是用户名称 这个时候输入数据库密码:

      然后进入mysq workbeach 中 进行操作 ,或者使用命令行实现,这里使用第三方库,pymysql。

    重要的SQL命令语法

    SQL命令 描述
    select 从数据库中提取数据
    updata 更新数据库中的数据
    delect 从数据库中删除数据
    insert into 从数据库中插入新数据
    create database 创建新数据库
    alter database 修改数据库
    create table 创建新表
    alter table 修改数据库表
    drop table 删除表
    create index 创建索引, (搜索键)
    drop index 删除索引

    基础函数作用:

    # 创建数据库连接
    self.db = pymysql.connect(host=self.host, user=self.user,
    password=self.password, database=self.databases, cursorclass=self.cursorclass)
    # 创建游标 便于执行sql语气
    self.cursor = self.db.cursor()
    
    # 使用游标来执行sql语气
    sql ='select * from students'
    self.cursor.execute(sql)
    
    # 得到数据表的行数
    self.cursor.rowcount()
    
    # 得到所有条数据,也就得到了版本号
    self.cursor.fetchall()
    
    # 得到第一条数据,也就得到了版本号
    self.cursor.fetchone()
    
    # 注意的是,如果是对数据库做了修改、删除、增加的操作,那么一定要commit提交,查询和创建表不需要提交
    self.db.commit()
    
    # 回滚数据
    self.db.rollback()
    
    # 关闭游标
    self.cursor.close()
    
    # 关闭数据库
    self.db.close()

    SQL基础创建函数:

    创建数据库:

    #  创建数据库
    
    sql = 'create database [数据库名称]  default character set utf8'
    cursor.execute(sql)
    
    # 获得当前mysql版本
    sql = 'select version()'
    cursor.execute(sql)

    创建表:

    # 创建表
    sql = 'create tabel if not exists [表名称][students]  (
    id varchar(255) not NUll, name varchar(255) not NUll
    age INT not Null, primary key(id)) '
    
    cursor.execute(sql)
    
    # 展示表
    sql = 'show tables'
    cursor.execute(sql)

    插入数据:

    # 插入数据
    name = '白嘉诚'
    sql = f'insert into student_score(name, gender) values("{name}","男")'  # 使用引号括起来
    
    try:
    cursor.execute(sql)  #  执行语气
    db.commit()  # 如果修改了就要提交一次表单
    except:
    db.rollback()  # 如果发生异常 执行数据回滚,重新再来
    
    # 动态插入数据 使用字典
    
    data = {
    'id': 1,
    'name': '张三炮',
    'gender': '男',
    'age': 12,
    'score': 99
    }
    
    def fun():
    data_len = "'%s', " * len(data)
    data_len = data_len[:-2]  # 去引号
    data_len = data_len % tuple(data.values())  # 格式化
    return data_len
    
    fun()
    table = 'student_score'
    keys = ', '.join(data.keys())
    
    sql = f"insert into {table}({keys}) values( {fun()})"

    更新数据:

    # 更新数据
    
    sql = "update students set age = '[new]' where name = '[old]'"
    try:
    cursor.execute(sql)  #  执行
    db.commit()  # 提交表单
    except:
    db.rollback()  # 回滚数据
    
    db,close()

    删除数据:

    # 删除数据
    
    table = 'student'
    condition = 'name ="张二炮"'
    sql = f'delete from {table} where {condition}'
    try:
    cursor.excute(sql) #  执行
    db.commit()  #  提交表单
    except:
    db,rollback()
    
    db.close()

    优质查询数据:

    # 查询数据
    # 优质单个数据查询   占用资源少 逐行取数据, 每循环一次, 游标就会偏移一次
    
    table = 'students'
    condition = 'age >= 20'
    sql = f"select * from  {table}  where  {condition}"
    try:
    cursor.execute(sql)  # 执行语气
    print('Count:', cursor.rowcount)
    row = cursor.fetchone()
    while row:
    print('row', row)
    row = cursor.fetchone()
    except:
    print('ERROR')

    功能简单封装:

    这个是借鉴了其他博客:当时没记住作者博客ID ,搞得忘记了,知道的可以联系我, 我后续加上去

    # -*- coding :  utf-8 -*-
    # @Time      :  2020/6/8  22:09
    # @author    :  沙漏在下雨
    # @Software  :  PyCharm
    # @CSDN      :  https://me.csdn.net/qq_45906219
    
    class MYSQL():
    def __init__(self, host, user, password, database, cursorclass=None):  # cursorclass将返回结果呈字典显示 ,如果传了就应用,不传就为None
    self.host = host  # ip地址,本机就传localhost就可以
    self.user = user  # 账户名,如果你没有更改过,那就是root
    self.password = password  # 数据库密码
    self.databases = database  # 你具体要连接的哪一个数据库
    self.cursorclass = cursorclass  # 返回结果呈字典形式  {}
    
    def connect(self):  # 创建连接数据库方法
    import pymysql
    # 创建数据库连接
    self.db = pymysql.connect(host=self.host, user=self.user,
    password=self.password, database=self.databases, cursorclass=self.cursorclass)
    # 创建游标 便于执行sql语气
    self.cursor = self.db.cursor()
    
    def get_one(self, sql):  # 返回一条符合条件的查询结果
    result = 0
    try:
    self.connect()
    self.cursor.execute(sql)
    result = self.cursor.fetchone()  # 得到第一条数据
    self.close()
    except Exception as e:
    print('select error', e)
    return result
    
    def get_all(self, sql):  # 返回全部符合条件的查询结果
    result = 0
    try:
    self.connect()  # 声明连接对象, 连接数据库
    self.cursor.execute(sql)  # 使用游标来执行sql语气
    result = self.cursor.fetchall()  # 得到所有条数据,也就得到了版本号
    self.close()
    except Exception as e:
    print("select error", e)
    return result
    
    def __edit(self, sql):  # 创建主函数
    result = 1  # 设置结果集,用于调用的时候做判断
    try:  # 这里是使用的try语句来尝试进行操作
    self.connect()
    self.cursor.execute(sql)
    self.db.commit()  # 注意的是,如果是对数据库做了修改、删除、增加的操作,那么一定要commit提交,查询和创建表不需要提交
    self.close()
    except Exception as e:  # 如果操作失败,报出操作异常,且游标进行回滚
    print('error :', e)
    result = 0
    self.db.rollback()
    return result
    
    def insert(self, sql):
    # 插入语句  ,以下三个都是一样的,只是调用的时候,我们看起来更加清晰而已
    return self.__edit(sql)  # 通过主函数的处理,来去执行sql语句
    
    def delete(self, sql):  # 删除语句
    return self.__edit(sql)
    
    def update(self, sql):  # 修改语句
    return self.__edit(sql)
    
    def close(self):  # 关闭方法
    self.cursor.close()  # 关闭游标
    self.db.close()  # 关闭数据库
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: