mysql是当下最流行的关系型数据库之一,今天用python连接操作下mysql
一.准备工作
1.安装 mysql-connector 库
mysql-connector是MySQL提供的驱动器,是用来连接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 条记录被修改