Python高级之操作Mysql

Python高级

文章目录

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()
相关推荐
果子⌂2 分钟前
Docker-构建镜像并实现LNMP架构
mysql·nginx·docker·容器·架构·php
金玉满堂@bj15 分钟前
PyCharm 中 Python 解释器的添加选项及作用
ide·python·pycharm
程序员三藏19 分钟前
如何使用Pytest进行测试?
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
程序员的世界你不懂1 小时前
adb 简介与常用命令
adb
随心点儿1 小时前
使用python 将多个docx文件合并为一个word
开发语言·python·多个word合并为一个
不学无术の码农1 小时前
《Effective Python》第十三章 测试与调试——使用 Mock 测试具有复杂依赖的代码
开发语言·python
sleepybear11131 小时前
在Ubuntu上从零开始编译并运行Home Assistant源码并集成HACS与小米开源的Ha Xiaomi Home
python·智能家居·小米·home assistant·米家·ha xiaomi home
纪伊路上盛名在1 小时前
(鱼书)深度学习入门1:python入门
人工智能·python·深度学习
Trust yourself2431 小时前
使用阿里云/腾讯云安装完成mysql使用不了
mysql·阿里云·腾讯云
夏末蝉未鸣011 小时前
python transformers笔记(TrainingArguments类)
python·自然语言处理·transformer