Python 连接 MySQL数据库以及一些对数据库的操作
Python 连接 MySQL数据库
Python标准数据库接口为Python DB-API,为我们的开发人员提供了数据库应用编程接口。
1、Python DB-API使用流程
- 导入API模块
- 获取与数据库的连接
- 执行SQL语句和存储过程
- 关闭数据库连接
2、安装MySQL-Connector
我们可以直接去MySQL-connector-python下载地址去下载
上面有两个download按键,上面是64位的MySQL驱动器安装程序,下面是32位的MySQL驱动器安装程序。
我们按需安装,如果你的MySQL是64位就装64位的驱动器,如果你的MySQL是32位就装32位的驱动器。
如果安装完成后,我们进入CMD中,输入python,进入Python的字符交互界面。我们输入以下的代码,如果没有出错的话,表明安装成功。
import mysql.connector
2、 Python连接数据库以及一些对数据库的操作
2.1、创建MySQL驱动
创建驱动时,需要自己数据库的主机名,用户名和用户密码。
mydb = mysql.connector.connect(
host="yourHost", # 数据库主机地址
user="yourUserName", # 数据库用户名
passwd="yourPassword" # 数据库用户密码
)
注意: passwd记得不要打错了,很容易被打成password。
2.2、创建游标对象
游标,通俗说法就是“游动的标志“,在数据库中是一个很重要的概念。
有时,我们需要执行一条查询语句时,往往会得到N条结果,执行SQL语句时,去除这些返回结果的接口就是游标。沿着这个接口,我们可以一次取出一行记录。
如果我们不适用游标功能的话,我们执行一个查询语句,系统会直接将记录返回到界面中,我们不能对数据进行操作。
如果我们开启了游标功能, 再去执行这条语句时,系统会帮我们找到这些行,先存放起来,然后提供一个游标接口。当你需要数据时,借助这个游标一行行取出数据,每取出一个记录,游标指针就朝前移动一次,直到取完最后一行数据为止。
# 创建游标对象
mycursor = mydb.cursor()
2.3、创建数据库
我们通过游标对象的execute()方法来执行SQL语句。
注意: 使用游标对象来执行SQL语句,系统并不会将结果返回到屏幕上,而是将上述得到的结果找个地方存储起来,提供一个游标接口给我们。我们需要调用数据时,可以从中提取数据。
# 创建数据库
mycursor.execute("create database mydb")
2.4、展示数据库
我们可以通过使用”Show databases“语句来查看数据库是否存在。
# 展示数据库
mycursor.execute("show databases")
for i in mycursor:
print(i)
查看结果如下:
2.5、创建数据表
我们可以在游标对象中的execute语句中使用”CREATE TABLE“语句。
创建数据表前,我们需要确保数据库已存在,以下我们创建一个名为User的数据表。
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database="mydb"
)
cursor = mydb.cursor()
cursor.execute("create table user (id int(10), name varchar(10));")
cursor.execute("show tables")
for i in cursor:
print(i)
执行成功后,我们将看到数据库创建的数据表user。
注意: 这里我是执行了一遍,所以注释了创建数据库的语句。
2.6、插入数据
插入数据是用“INSERT INTO"语句。
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database="mydb"
)
mycursor = mydb.cursor()
sql = "INSERT INTO user VALUES (1, 'Mike')"
mycursor.execute(sql)
mydb.commit()
print(mycursor.rowcount, "记录插入成功")
显示结果
查看插入结果
注意: 涉及到对数据库内容的修改都需要使用commit方法,需要提交。
2.7、批量插入
插入数据是用“INSERT INTO"语句。
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database="mydb"
)
mycursor = mydb.cursor()
sql = "INSERT INTO user VALUES (2, 'Bob'), (3, 'Jobs'), (4, 'Alice'), (5, 'Mark')"
mycursor.execute(sql)
mydb.commit()
print(mycursor.rowcount, "记录插入成功")
显示结果
查看插入结果
2.8、查询数据
查询数据使用SELECT语句
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database="mydb"
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM user")
myresult = mycursor.fetchall() #获取所有记录
for i in myresult:
print(i)
查询结果
读取一条数据
我们如果只想读取一条数据,可以使用fetchone方法
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database="mydb"
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM user")
myresult = mycursor.fetchone() #获取所有记录
print(myresult)
查看结果
where条件语句
查询指定条件的数据,我们需要使用where语句。
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database="mydb"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM user WHERE name LIKE '%o%'"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
查看结果
2.9、排序
查询结果排序可以使用 ORDER BY 语句,默认的排序方式为升序,关键字为 ASC,如果要设置降序排序,可以设置关键字 DESC。
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database="mydb"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM user ORDER BY name"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
查看结果
2.10、删除数据
删除数据使用"DELTE FROM"语句
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database="mydb"
)
mycursor = mydb.cursor()
sql = "DELETE FROM user WHERE name = 'Mark'"
mycursor.execute(sql)
mydb.commit()
print(mycursor.rowcount, "条记录被删除")
查看结果
查询结果
2.11 更新数据
数据表的更新使用"UPDATE"语句
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database="mydb"
)
mycursor = mydb.cursor()
sql = "UPDATE user SET name = 'Tom' WHERE name = 'Bob'"
mycursor.execute(sql)
mydb.commit()
print(mycursor.rowcount, "条记录被修改")
查看结果
查询结果
2.12 删除表
删除表使用 “DROP TABLE” 语句, IF EXISTS 关键字是用于判断表是否存在,只有在存在的情况才删除。
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database="mydb"
)
mycursor = mydb.cursor()
sql = "DROP TABLE IF EXISTS user" # 删除数据表 user
mycursor.execute(sql)
删除结果
上一篇: 后端连接数据库的一些问题