本学习笔记基于 菜鸟教程的 Python教程
链接:https://www.runoob.com/python3/python-mysql-connector.html
菜鸟教程:https://www.runoob.com/mysql/mysql-tutorial.html
安装 mysql-connector :MySQL官方提供的驱动器:pip install mysql-connector
导入模块:import mysql.connector
SQL语句汇总:
创建数据库连接:
import mysql.connector
mydb = mysql.connector.connect(host='主机地址',
user='用户名', password='密码', database='数据库名')
创建数据库
# 创建数据库
mycursor.execute('CREATE DATABASE 数据库名')
输出所有 已创建数据库
# 输出所有 已创建数据库
mycursor.execute("SHOW DATABASES")
for x in mycursor:
print(x)
切换至 指定数据库
# 切换至 指定数据库
mycursor.execute("USE 数据库名")
创建数据表
# 创建数据表
mycursor.execute("CREATE TABLE sites (列名 VARCHAR(255), 列名 VARCHAR(255))")
输出所有当前数据库中的 数据表
# 输出所有当前数据库中的 数据表
mycursor.execute("SHOW TABLES")
for x in mycursor:
print(x)
为已存在的表主键设置
# 为已存在的表主键设置:使用 "INT AUTO_INCREMENT PRIMARY KEY" 语句来创建一个主键,主键起始值为 1,逐步递增。
mycursor.execute("ALTER TABLE 表名 ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")
创建一个表的同时设置主键
# 创建一个表的同时设置主键
mycursor.execute("CREATE TABLE 表名 (id INT AUTO_INCREMENT PRIMARY KEY, 列名 VARCHAR(255), 列名 VARCHAR(255))")
插入数据
# 插入数据: INSERT INTO
sql = "INSERT INTO 表名 (列名1, 列名2) VALUES (%s, %s)"
val = ("数据", "数据")
mycursor.execute(sql, val)
mydb.commit() # 数据表内容有更新,必须使用到该语句
批量插入数据
# 批量插入数据:使用 executemany() 方法,该方法的第二个参数是一个元组列表,包含了我们要插入的数据
sql = "INSERT INTO sites (name, url) VALUES (%s, %s)"
val = [
('Google', 'https://www.google.com'),
('Github', 'https://www.github.com'),
('Taobao', 'https://www.taobao.com'),
('stackoverflow', 'https://www.stackoverflow.com/')
]
mycursor.executemany(sql, val)
mydb.commit() # 数据表内容有更新,必须使用到该语句
获取 ID
# 如果我们想在数据记录插入后,获取该记录的 ID ,可以使用以下代码
print("1 条记录已插入, ID:", mycursor.lastrowid)
查询数据
# 查询数据 SELECT
mycursor.execute("SELECT * FROM 表名")
myresult = mycursor.fetchall() # fetchall() 获取所有记录
for x in myresult:
print(x)
读取指定的字段数据
# 读取指定的字段数据
mycursor.execute("SELECT 列名1, 列名2 FROM 表名")
myresult = mycursor.fetchall()
for x in myresult:
print(x)
fetchone
# 如果我们只想读取一条数据,可以使用 fetchone() 方法
myresult = mycursor.fetchone()
print(myresult)
WHERE
# 如果我们要读取指定条件的数据,可以使用 where 语句
sql = "SELECT * FROM sites WHERE name ='RUNOOB'"
mycursor.execute(sql)
查询结果排序 ORDER BY
# 排序 查询结果排序可以使用 ORDER BY 语句,默认为升序,关键字为 ASC,降序排序关键字 DESC
sql = "SELECT * FROM sites ORDER BY name"
mycursor.execute(sql)
设置查询量 LIMIT
# 设置查询量:如果我们要设置查询的数据量,可以通过 "LIMIT" 语句来指定
mycursor.execute("SELECT * FROM sites LIMIT 3")
指定起始位置 OFFSET
# 指定起始位置:可以指定起始位置,使用的关键字是 OFFSET
mycursor.execute("SELECT * FROM sites LIMIT 3 OFFSET 1") # 0 为 第一条,1 为第二条,以此类推
删除记录 DELETE
# 删除记录:使用 "DELETE FROM" 语句
sql = "DELETE FROM 表名 WHERE 列名 = '某一数据'"
mycursor.execute(sql)
mydb.commit()
更新表数据 UPDATE
# 更新表数据:数据表更新使用 "UPDATE" 语句
sql = "UPDATE 表名 SET 列名 = '新数据' WHERE 列名 = '原数据'"
mycursor.execute(sql)
mydb.commit()
删除 表
# 删除表:使用 "DROP TABLE" 语句, IF EXISTS 关键字是用于判断表是否存在,只有在存在的情况才删除
sql = "DROP TABLE IF EXISTS 表名" # 删除数据表 sites
mycursor.execute(sql)