安装驱动
python -m pip install mysql-connector
导包
import mysql.connector
mydb = mysql.connector.connect(
host="localhost", # 数据库主机地址
user="root", # 数据库用户名
passwd="root" # 数据库密码
)
创建游标
mycursor = mydb.cursor()
使用 mycursor.execute("sql 语句") 进行运行
mycursor.execute("CREATE DATABASE runoob_db")
指定数据库名为 runoob_db
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="123456",
database="runoob_db"
)
创建数据表
mycursor.execute("CREATE TABLE sites (name VARCHAR(255), url VARCHAR(255))")
查看当前数据表有哪些
mycursor.execute("SHOW TABLES")
使用 "INT AUTO_INCREMENT PRIMARY KEY" 语句
创建一个主键,主键起始值为 1,逐步递增
mycursor.execute("ALTER TABLE sites ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")
创建表时,添加主键
mycursor.execute("CREATE TABLE sites (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), url VARCHAR(255))")
插入数据
sql = "INSERT INTO sites (name, url) VALUES (%s, %s)"
val = ("RUNOOB", "https://www.runoob.com")
mycursor.execute(sql, val)
mydb.commit() # 数据表内容有更新,必须使用到该语句
打印 行号
mycursor.rowcount
插入多条语句
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‘),
(‘*‘, ‘https://www.*.com/‘)
]
mycursor.executemany(sql, val)
mydb.commit() # 数据表内容有更新,必须使用到该语句
在数据插入后,获取该条记录的 ID
mycursor.lastrowid
使用 fetchall() 获取所有记录
mycursor.execute("SELECT * FROM sites")
myresult = mycursor.fetchall()
for x in myresult:
print(x)
选取指定数据进行查找
mycursor.execute("SELECT name, url FROM sites")
myresult = mycursor.fetchall()
for x in myresult:
print(x)
使用 .fetchone() 获取一条数据
mycursor.execute("SELECT * FROM sites")
myresult = mycursor.fetchone()
print(myresult)
使用 where 语句
sql = "SELECT * FROM sites WHERE name =‘RUNOOB‘"
mycursor.execute(sql)
myresult = mycursor.fetchall()
使用 fetchall 之后,需要使用循环进行输出
for x in myresult:
print(x)
使用 通配符 %
sql = "SELECT * FROM sites WHERE url LIKE ‘%oo%‘"
使用 %s 防止发生 SQL 注入攻击
sql = "SELECT * FROM sites WHERE name = %s"
na = ("RUNOOB", )
mycursor.execute(sql, na)
排序
使用 ORDER BY 语句,默认升序,关键字为 ASC
如果要设置降序排序,可以设置关键字 DESC
sql = "SELECT * FROM sites ORDER BY name"
mycursor.execute(sql)
降序 DESC
sql = "SELECT * FROM sites ORDER BY name DESC"
mycursor.execute(sql)
使用 limit 设置查询的数据量
mycursor.execute("SELECT * FROM sites LIMIT 3")
limit 指定起始位置 使用 offset
mycursor.execute("SELECT * FROM sites LIMIT 3 OFFSET 1")
# 0 为 第一条,1 为第二条,以此类推
myresult = mycursor.fetchall()
删除记录 delete from
sql = "DELETE FROM sites WHERE name = ‘*‘"
mycursor.execute(sql)
sql = "DELETE FROM sites WHERE name = %s"
na = ("*", )
mycursor.execute(sql, na)
更新表中数据 update
sql = "UPDATE sites SET name = ‘ZH‘ WHERE name = ‘Zhihu‘"
mycursor.execute(sql)
sql = "UPDATE sites SET name = %s WHERE name = %s"
val = ("Zhihu", "ZH")
mycursor.execute(sql, val)
删除表 drop table
可以先使用 if exists 判断是否存在
sql = "DROP TABLE IF EXISTS sites" # 删除数据表 sites
mycursor.execute(sql)
2020-06-03