一、入门引导
1、Python 需要 安装MySQL 驱动程序来访问 MySQL 数据库。
pip命令下载并安装装 “MySQL Connector”
pip install mysql-connector
2、创建与数据库的连接
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
port=3306,
user="yourusername",
passwd="yourpassword",
database="mydatabase" #mydatabase为数据库名
)
3、执行数据库的增删改查等操作
在Python中如果要使用数据库执行操作,不管是MySQL、SQL Server、PostgreSQL亦或是SQLite,使用时都是采用游标的方式。
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
passwd="yourpassword",
database="mydatabase" #mydatabase为数据库名
)
mycursor = mydb.cursor() #创建游标对象
mycursor.execute("CREATE DATABASE mydatabase") #使用execute()方法,执行SQL语句
使用fetchone()或fetchall()获取数据
二、一般操作流程
- 建立数据库连接
- 通过 cursor() 创建游标对象
- 执行sql
- 关闭游标
- 关闭连接
完整demo如下:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
passwd="yourpassword",
database="mydatabase" #mydatabase为数据库名
)
mycursor = mydb.cursor() #创建游标对象
#创建表
mycursor.execute("CREATE TABLE user (name VARCHAR(255), address VARCHAR(255))")
mycursor.execute("SELECT * FROM `faq_custom_scene` where id = 9501;") #查询
myresult01= mycursor.fetchone() #提取查询数据
myresult02= mycursor.fetchall() #提取查询数据
myresult03= mycursor.fetchmany(5) #提取5条查询数据
print(myresult01) #打印显示查询数据
print(myresult02) #打印显示查询数据
print(myresult03) #打印显示查询数据
'''
当开启游标功能执行这个SELECT SQL语句后,系统并不会将结果直接打印到频幕上,而是将上述得到的结果,找个地方存储起来
提供一个游标接口给我们,当你需要获取数据的时候,就可以从中拿数据。
'''
#插入单条数据:
mycursor.execute("INSERT INTO `user`(`name`、`address`) VALUE ('cc','cui');")#插入一条数据
# 插入多条数据时,可以使用"%s"占位符
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = [
('William', 'Central st 954'),
('Chuck', 'Main Road 989'),
('Viola', 'Sideway 1633')
]
mycursor.executemany(sql, val)
# executemany(sql,val)
# sql 要执行的命令
# val元组列表,为要插入的数据
mycursor.execute("UPDATE `faq_custom_scene` SET name = "cc" where `id` = 9501;") #修改
mycursor.execute("DELETE FROM `faq_custom_scene` WHERE `id` = 9502;")#删除
mydb.commit() # 提交事务
mycursor.close() # 关闭游标
mydb.close() # 关闭数据库连接
三、数据库操作方法
数据库层层级操作:
close() 关闭数据库连接, 关闭后无法再进行操作,除非再次创建连接,如:my.db.close()
cursor() 创建游标对象。一个游标允许用户执行数据库命令和得到查询结果,如:my.db.cursor()
commit() 提交当前事务,执行游标对象的所有更新操作,如:my.db.commit()
rollback() 取消当前事务,回滚当前游标的所有操作,如:my.db.cursor()
游标层级操作:
close():关闭此游标对象,如:mycursor.close()
excute(sql[, args]):执行sql命令,如:mycursor.excute()
executemany():执行多条数据,如:mycursor.executemany()
,executemany() 方法的第二个参数是元组列表,包含要插入的数据
fetchone():获取结果集中的数据,该方法一次获取一条记录,每一条记录是一个元组形式的数据,如:mycursor.fetchone()
fetchall():一次性获取结果集中的所有数据,该方法返回的是一个元组列表。,如:mycursor.fetchall()
fetchmany(n):获取结果集中的n条数据:返回结果的size条数据,并以元组的形式返回,如:mycursor.fetchmany()
callproc(func[,args]): 调用一个存储过程,如:mycursor.callproc()
四、游标
1、什么是游标:
游标,通俗的解释就是"游动的标志",这是数据库中一个很重要的概念。
有时候,我们执行一条查询语句的时候,会得到N条返回结果,系统会一次性将所有记录返回到界面中,因为没有选择具体的数据记录,无法做其他操作。当我们开启了游标功能,系统会先帮你找到这些行,先给你存放起来,然后提供了一个游标接口。当你需要数据的时候,就借助这个游标去一行行的取出数据,你每取出一条记录,游标指针就朝前移动一次,一直到取完最后一行数据。
执行sql语句取出这些返回结果的接口,就是游标。
2、使用游标的好处
如果不使用游标功能,直接使用select查询,会一次性将结果集打印到屏幕上,你无法针对结果集做第二次编程。使用游标功能后,我们可以将得到的结果先保存起来,然后可以随意进行自己的编程,得到我们最终想要的结果集。