Python高级之操作Mysql

Python高级

文章目录

python操作数据库mysql-connector

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

可以使用 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()
相关推荐
苏离~Hack6 小时前
惠民云平台开发实战:基于 Vue3 + Django 的社区服务系统设计与实现
后端·python·django
言乐614 小时前
HTML视频审核模型
python·django·virtualenv·pygame·tornado
言乐615 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
yl453016 小时前
硫酸泄露处理生产商怎么选才够专业
大数据·人工智能·python
笨笨饿16 小时前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网
java1234_小锋16 小时前
【技术专题】Mysql8 数据库 - Mysql8 数据类型简介
数据库·mysql
for_ever_love__17 小时前
机器学习入门——手写线性回归与梯度下降
人工智能·python·学习·机器学习·线性回归
打工仔折腾 AI17 小时前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战
JosieBook17 小时前
【数据库】MySQL 实战精通系列 · 第10篇:分库分表与分布式事务实战
数据库·分布式·mysql
I Am a robert girl17 小时前
当传感器学会“说谎“:拆解可靠性门控的稀疏惯性动捕融合
python·姿态估计·传感器融合·惯性动捕·imu传感器·可靠性门控·可穿戴计算