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()
相关推荐
天天进步20155 分钟前
Python全栈项目:实时数据处理平台
开发语言·python
Tipriest_5 分钟前
Python中is关键字详细说明,比较的是地址还是值
开发语言·python
sheji34167 分钟前
【开题答辩全过程】以 基于Python的餐饮统计系统的设计和实 现为例,包含答辩的问题和答案
开发语言·python
遨游xyz19 分钟前
排序-快速排序
开发语言·python·排序算法
iFeng的小屋30 分钟前
【2026年新版】Python根据小红书关键词爬取所有笔记数据
笔记·爬虫·python
m0_5613596731 分钟前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
LeonDL16832 分钟前
基于YOLO11深度学习的衣物识别系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
人工智能·python·pyqt5·yolo数据集·yolo11数据集·yolo11深度学习·衣物识别系统
傻啦嘿哟40 分钟前
Python操作PDF页面详解:删除指定页的完整方案
开发语言·python·pdf
serve the people44 分钟前
python环境搭建 (十三) tenacity重试库
服务器·python·php
ASS-ASH44 分钟前
AI时代之向量数据库概览
数据库·人工智能·python·llm·embedding·向量数据库·vlm