python mysql连接操作(增删改查)

2021-02-18 17:36:22 浏览数 (1)

mysql是当下最流行的关系型数据库之一,今天用python连接操作下mysql

一.准备工作

1.安装 mysql-connector

mysql-connectorMySQL提供的驱动器,是用来连接mysql的

2.修改mysql的配置文件

在 MySQL 8.0 中验证插件和密码加密方式发生了变化,要让它使用“mysql_native_password”插件认证方式,所以需要在mysql的配置文件my.ini中[mysqld]下添加一下内容,并重启mysql

代码语言:javascript复制
[mysqld]
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password

二.连接数据库

代码如下:需要准确的输入数据库的主机地址,用户名,密码

代码语言:javascript复制
import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",   #数据库主机地址
    user="root",        #数据库用户名
    passwd="Aa123",     #数据库密码
    auth_plugin='mysql_native_password'    #使用插件验证
)
print(mydb)

三.使用CREATE DATABASE创建数据库

代码语言:javascript复制
import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",   #数据库主机地址
    user="root",        #数据库用户名
    passwd="Aa123",     #数据库密码
    auth_plugin='mysql_native_password'    #使用插件验证
)
mycursor = mydb.cursor()
#使用CREATE DATABASE 创建student_db库
mycursor.execute("CREATE DATABASE student_db")

执行上面语句,就可以看到navicate中多了一个student_db库

四.使用CREATE TABLE创建数据表

代码语言:javascript复制
import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",   #数据库主机地址
    user="root",        #数据库用户名
    passwd="Aa123",     #数据库密码
    auth_plugin='mysql_native_password',   #使用插件验证
    database="student_db"   #指定连接student_db库
)
mycursor = mydb.cursor()
#使用CREATE TABLE 创建student表
mycursor.execute("CREATE TABLE student (name VARCHAR(255), score int(10))")

执行语句,效果如下

五.使用SHOW TABLES查看数据表是否存在

代码语言:javascript复制
import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",  # 数据库主机地址
    user="root",  # 数据库用户名
    passwd="Aa123",  # 数据库密码
    auth_plugin='mysql_native_password',  # 使用插件验证
    database="student_db"  # 指定连接student_db库
)
mycursor = mydb.cursor()
mycursor.execute("SHOW TABLES")

for x in mycursor:
    print(x)

结果如下

代码语言:javascript复制
('student',)

六.使用INSERT INTO插入数据

代码语言:javascript复制
import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",   #数据库主机地址
    user="root",        #数据库用户名
    passwd="Aa123",     #数据库密码
    auth_plugin='mysql_native_password',   #使用插件验证
    database="student_db"   #指定连接student_db库
)
mycursor = mydb.cursor()
sql = "INSERT INTO student (name, score) VALUES (%s, %s)"
val = ("唐三", 33)
mycursor.execute(sql, val)

mydb.commit()  # 数据表内容有更新,必须使用到该语句

print(mycursor.rowcount, "记录插入成功。")

执行代码

代码语言:javascript复制
1
记录插入成功。

数据库如下:

七.使用executemany批量插入

代码语言:javascript复制
import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",  # 数据库主机地址
    user="root",  # 数据库用户名
    passwd="Aa123",  # 数据库密码
    auth_plugin='mysql_native_password',  # 使用插件验证
    database="student_db"  # 指定连接student_db库
)
mycursor = mydb.cursor()
sql = "INSERT INTO student (name, score) VALUES (%s, %s)"
val = [
    ('小舞', 55),
    ('马六', 46),
    ('赵四', 24)
]

mycursor.executemany(sql, val)

mydb.commit()  # 数据表内容有更新,必须使用到该语句

print(mycursor.rowcount, "记录插入成功。")

执行语句:

代码语言:javascript复制
3 记录插入成功。

数据库

八.使用SELECT查询数据

代码语言:javascript复制
import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",  # 数据库主机地址
    user="root",  # 数据库用户名
    passwd="Aa123",  # 数据库密码
    auth_plugin='mysql_native_password',  # 使用插件验证
    database="student_db"  # 指定连接student_db库
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM student")

myresult = mycursor.fetchall()  # fetchall() 获取所有记录

for x in myresult:
    print(x)

执行效果如下

代码语言:javascript复制
('唐三', 33)
('小舞', 55)
('马六', 46)
('赵四', 24)

九.使用ALTER TABLE来给表添加主键

代码语言:javascript复制
import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",   #数据库主机地址
    user="root",        #数据库用户名
    passwd="Aa123",     #数据库密码
    auth_plugin='mysql_native_password',   #使用插件验证
    database="student_db"   #指定连接student_db库
)
mycursor = mydb.cursor()
mycursor.execute("ALTER TABLE student ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")

执行效果:

十.使用where 条件语句查询

按照分数score升序

代码语言:javascript复制
import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",  # 数据库主机地址
    user="root",  # 数据库用户名
    passwd="Aa123",  # 数据库密码
    auth_plugin='mysql_native_password',  # 使用插件验证
    database="student_db"  # 指定连接student_db库
)
mycursor = mydb.cursor()
sql = "SELECT * FROM student WHERE name LIKE '%三%'"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
    print(x)

执行效果:

代码语言:javascript复制
('唐三', 33, 1)

十一.使用ORDER BY排序

查询结果排序可以使用ORDER BY语句,默认的排序方式为升序,关键字为ASC,如果要设置降序排序,可以设置关键字DESC

代码语言:javascript复制
import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",  # 数据库主机地址
    user="root",  # 数据库用户名
    passwd="Aa123",  # 数据库密码
    auth_plugin='mysql_native_password',  # 使用插件验证
    database="student_db"  # 指定连接student_db库
)
mycursor = mydb.cursor()
sql = "SELECT * FROM student ORDER BY score"

mycursor.execute(sql)

myresult = mycursor.fetchall()

for x in myresult:
    print(x)

执行效果:

代码语言:javascript复制
('赵四', 24, 4)
('唐三', 33, 1)
('马六', 46, 3)
('小舞', 55, 2)

十二.使用DELETE FROM删除数据

代码语言:javascript复制
import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",  # 数据库主机地址
    user="root",  # 数据库用户名
    passwd="Aa123",  # 数据库密码
    auth_plugin='mysql_native_password',  # 使用插件验证
    database="student_db"  # 指定连接student_db库
)
mycursor = mydb.cursor()
sql = "DELETE FROM student WHERE name = '赵四'"

mycursor.execute(sql)

mydb.commit()

print(mycursor.rowcount, " 条记录删除")

执行结果:

代码语言:javascript复制
1  条记录删除

十三.使用UPDATE更新数据

代码语言:javascript复制
import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",  # 数据库主机地址
    user="root",  # 数据库用户名
    passwd="Aa123",  # 数据库密码
    auth_plugin='mysql_native_password',  # 使用插件验证
    database="student_db"  # 指定连接student_db库
)
mycursor = mydb.cursor()
sql = "UPDATE student SET name ='小五' WHERE name = '小舞'"

mycursor.execute(sql)

mydb.commit()

print(mycursor.rowcount, " 条记录被修改")

执行效果:

代码语言:javascript复制
1  条记录被修改

0 人点赞