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()
相关推荐
夕泠爱吃糖几秒前
MySQL中的部分问题(1)
数据库·mysql
MYH51614 分钟前
汽车停车匹配充电桩随机森林
python·随机森林·汽车
鼓掌MVP22 分钟前
Python多线程编程:从GIL锁到实战优化
python
天天爱吃肉821828 分钟前
【十年技术演进深度解构:车载充电机(OBC)将成为新能源汽车的“能源大脑”】
python·嵌入式硬件·算法·汽车·能源
这里有鱼汤29 分钟前
有人说10日低点买入法,赢率高达95%?我不信,于是亲自回测了下…
后端·python
阿幸软件杂货间40 分钟前
video-audio-extractor【源码版】
python
秃了也弱了。42 分钟前
DBSyncer:开源数据库同步利器,MySQL/Oracle/ES/SqlServer/PG/
数据库·mysql·开源
灏瀚星空1 小时前
Python线性代数应用可视化:从矩阵变换到图像仿射
python·线性代数·矩阵
喜欢踢足球的老罗1 小时前
使用 Spring Boot 3.3 和 JdbcTemplate 操作 MySQL 数据库
数据库·spring boot·mysql
FAQEW1 小时前
爬虫的几种方式(使用什么技术来进行一个爬取数据)
爬虫·python