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() 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, " 条记录被修改")
|