草根之明

管理及技术博客

0%

mysql-connector 驱动

1
pip install mysql-connector

创建数据库

创建数据库使用 “CREATE DATABASE” 语句,以下创建一个名为 runoob_db 的数据库:

1
2
3
4
5
6
7
8
9
10
11
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="123456"
)

mycursor = mydb.cursor()

mycursor.execute("CREATE DATABASE runoob_db")

链接数据库

1
2
3
4
5
6
7
8
9
import mysql.connector

mydb = mysql.connector.connect(
host="localhost", # 数据库主机地址
user="yourusername", # 数据库用户名
passwd="yourpassword" # 数据库密码
database="runoob_db" # 数据库名称
)
print(mydb)

插入数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="123456",
database="runoob_db"
)
mycursor = mydb.cursor()

sql = "INSERT INTO sites (name, url) VALUES (%s, %s)"
val = ("RUNOOB", "https://www.runoob.com")
mycursor.execute(sql, val)

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

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

批量插入数据

批量插入使用 executemany() 方法,该方法的第二个参数是一个元组列表,包含了我们要插入的数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="123456",
database="runoob_db"
)
mycursor = mydb.cursor()

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() # 数据表内容有更新,必须使用到该语句

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

如果我们想在数据记录插入后,获取该记录的 ID ,可以使用以下代码 (mycursor.lastrowid):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="123456",
database="runoob_db"
)
mycursor = mydb.cursor()

sql = "INSERT INTO sites (name, url) VALUES (%s, %s)"
val = ("Zhihu", "https://www.zhihu.com")
mycursor.execute(sql, val)

mydb.commit()

print("1 条记录已插入, ID:", mycursor.lastrowid)

查询数据

查询数据使用 SELECT 语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="123456",
database="runoob_db"
)
mycursor = mydb.cursor()

mycursor.execute("SELECT * FROM sites")

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

for x in myresult:
print(x)

执行代码,输出结果为:

1
2
3
4
5
6
(1, 'RUNOOB', 'https://www.runoob.com')
(2, 'Google', 'https://www.google.com')
(3, 'Github', 'https://www.github.com')
(4, 'Taobao', 'https://www.taobao.com')
(5, 'stackoverflow', 'https://www.stackoverflow.com/')
(6, 'Zhihu', 'https://www.zhihu.com')

如果我们只想读取一条数据,可以使用 fetchone() 方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="123456",
database="runoob_db"
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM sites")
myresult = mycursor.fetchone()

print(myresult)

where 条件语句

如果我们要读取指定条件的数据,可以使用 where 语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="123456",
database="runoob_db"
)
mycursor = mydb.cursor()

sql = "SELECT * FROM sites WHERE name ='RUNOOB'"
mycursor.execute(sql)
myresult = mycursor.fetchall()

for x in myresult:
print(x)

为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义查询的条件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="123456",
database="runoob_db"
)
mycursor = mydb.cursor()

sql = "SELECT * FROM sites WHERE name = %s"
na = ("RUNOOB", )

mycursor.execute(sql, na)
myresult = mycursor.fetchall()

for x in myresult:
print(x)

删除数据

删除记录使用 “DELETE FROM” 语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="123456",
database="runoob_db"
)
mycursor = mydb.cursor()

sql = "DELETE FROM sites WHERE name = 'stackoverflow'"

mycursor.execute(sql)
mydb.commit()
print(mycursor.rowcount, " 条记录删除")

更新表数据

数据表更新使用 “UPDATE” 语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import mysql.connector

mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="123456",
database="runoob_db"
)
mycursor = mydb.cursor()

sql = "UPDATE sites SET name = 'ZH' WHERE name = 'Zhihu'"

mycursor.execute(sql)
mydb.commit()

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