Python高级

文章目录

  • Python高级
  • python操作数据库mysql-connector
  • demo_mysql_test.py:
  • pyMysql
  • python操作数据库mysql-connector

    本章节为大家介绍使用 mysql-connector 来连接使用 MySQL, mysql-connectorMySQL 官方提供的驱动器。

    可以使用 pip 命令来安装 mysql-connector

    python -m pip install mysql-connector
    

    使用以下代码测试 mysql-connector 是否安装成功:

    demo_mysql_test.py:

    import mysql.connector

    执行以上代码,如果没有产生错误,表明安装成功。

    注**意:**如果你的 MySQL 是 8.0 版本,密码插件验证方式发生了变化,早期版本为 mysql_native_password,8.0 版本为 caching_sha2_password,所以需要做些改变:

    先修改 my.ini 配置:

    [mysqld]
    default_authentication_plugin=mysql_native_password
    

    然后在 mysql 下执行以下命令来修改密码:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
    

    # mysql-connect test
    
    import mysql.connector
    
    mysqlDb = mysql.connector.connect(
        host='localhost',
        user='root',
        password='Lh_198571',
        database = 'db_python'
    )
    
    
    # 创建数据库
    def createDb(mysqlDb):
        cursor = mysqlDb.cursor()
        cursor.execute("create database db_python2")
        print('数据库创建成功')
    
    
    # createDb(mysqlDb)
    
    # 查看数据库
    def showDb(mysqlDb):
        cursor = mysqlDb.cursor()
        cursor.execute("SHOW DATABASES")
        for i in cursor:
            print(i)
    
    # showDb(mysqlDb)
    
    # 创建表
    # 创建表必须选中数据库才能创建,因此在创建表时,必须在connect中添加database指定数据库
    def createTable(mysqlDb):
        cursor = mysqlDb.cursor()
        cursor.execute("CREATE TABLE tb_user(id int not null primary key auto_increment,name varchar(20),sex int)")
    
    # createTable(mysqlDb)
    
    # 执行insert语句
    def insert(mysqlDb):
        cursor = mysqlDb.cursor()
        try:
            cursor.execute("INSERT INTO tb_user(name,sex) values('sofwin2',0)")
            print('insert成功')
        except:
            print('插入异常')
        finally:
            mysqlDb.commit()
    
    # insert(mysqlDb)
    
    # 查询语句
    
    def query(mysqlDb):
        cursor = mysqlDb.cursor()
        cursor.execute("select * from tb_user")
        users = cursor.fetchall()
        for user in users:
            print(user[0])
            print(user[1])
            print(user[2])
    
    query(mysqlDb)
    
    # 将查询语结果封装到list中,每个标位为dict
    
    def queryAll(mysqlDb):
        cursor = mysqlDb.cursor()
        cursor.execute("select * from tb_user")
        users = cursor.fetchall()
        userList=[]
        for user in users:
            u = {}
            u['id'] = user[0]
            u['name'] = user[1]
            u['sex'] = user[2]
            userList.append(u)
        print(userList)
    
    queryAll(mysqlDb)
    
    # 定义user对象
    
    class User:
        id = 0
        name = ''
        sex = 0
        def __init__(self,id, name, sex):
            self.id = id
            self.name = name
            self.sex = sex
        def __str__(self):
            print('用户id:'+ str(self.id)+',name:'+self.name+',sex:'+ str(self.sex))
    
    # list中封装User对象
    def queryAll2(mysqlDb):
        cursor = mysqlDb.cursor()
        cursor.execute("select * from tb_user")
        users = cursor.fetchall()
        userList=[]
        for x in users:
            u  = User(x[0],x[1],x[2])
            userList.append(u)
        print(userList.__str__())
    
    queryAll2(mysqlDb)
    
    # 修改
    
    def update(mysqlDb):
        cursor = mysqlDb.cursor()
        try:
            cursor.execute("update tb_user set name='helloWorld' where id = 2")
        finally:
            mysqlDb.commit()
    
    
    update(mysqlDb)
    
    
    # delete语句
    def delete(mysqlDb):
        cursor = mysqlDb.cursor()
        try:
            cursor.execute("delete from tb_user where id = 3")
        finally:
            mysqlDb.commit()
    
    
    delete(mysqlDb)
    
    queryAll(mysqlDb)
    
    
    

    pyMysql

    PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2 中则使用 mysqldb。

    PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

    使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。

    PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。

    如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL:

    $ pip install PyMySQL
    
    # pyMysql
    
    import pymysql
    
    db = pymysql.connect(
        host='localhost',
        user='root',
        password='Lh_198571',
        database='db_python'
    )
    
    
    # 查询
    def query():
        # 创建游标对象
        cursor = db.cursor()
        # 执行查询方法
        cursor.execute("select * from tb_user")
        # 获取到元组
        result = cursor.fetchall()
        print(type(result))
        print(result)
    
    
    # 插入 第一个参数不能为默认参数
    def insert(name, sex, mdb=db):
        cursor = mdb.cursor()
        try:
            print("insert into tb_user(name,sex) values('" + name + "'," + str(sex) + ")")
            cursor.execute("insert into tb_user(name,sex) values('" + name + "'," + str(sex) + ")")
        finally:
            mdb.commit()
    
    
    insert('a1', 10)
    
    
    # 删除
    
    def delete(id, mdb=db):
        cursor = mdb.cursor()
        try:
            cursor.execute("delete from tb_user where id = 5")
        finally:
            mdb.commit()
    
    
    delete(5)
    
    
    # 修改
    def update(id, mdb=db):
        cursor = mdb.cursor()
        try:
            cursor.execute("update tb_user set name ='aaaaa' where id=" + str(id))
        finally:
            mdb.commit()
    
    # 根据id 查询一调数据
    def getOne(id, mdb = db):
        cursor = mdb.cursor()
        cursor.execute("select * from tb_user where id=" + str(id))
        result = cursor.fetchone()
        # tuple 元组
        print(type(result))
        print(result)
    
    getOne(4)
    
    
    update(6)
    query()
    
    

    作者:_AndyLau

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python高级之操作Mysql

    发表回复