python 操作 mysql

image1.png

1 安装 pymysql

pip install pymysql

#引入模块
import pymysql

2 参数说明

database(db): 数据库的名称

host: 连接的 MySQL 主机,如果是本地连接则是'localhost'

user: 连接的用户名

port: 连接的 MySQL 主机的端口,默认是 3306

password: 连接的密码

#连接数据库pymysql.connect
if __name__ == '__main__':
db='student'#可改
host='localhost'
user='root'
password='******'
port=3306
db=pymysql.connect(host=host,user=user,password=password,port=3306,database=db,charset='utf8')
print(db)
def main():
# 创建Connection连接
conn = pymysql.connect(host='localhost', port=3306 , user='root', password='sh99', database='student',charset='utf8')
# 获取Cursor对象
cs1 = conn.cursor()
#查询----------------------------------------------------------------------------------------------------------------------------
#执行select语句,查询student表里的数据
count = cs1.execute("select * from std")
# 打印受影响的行数
print("查询到%d条数据:"% count)
for i in range(count):
# 获取查询结果
result = cs1.fetchone()
# 打印查询结果
print(result)
#查询结束-----------------------------------------------------------------------------------------------------------------------------
# 提交之前的操作,如果之前已经执行过多次的excute,那么就都进行提交
conn.commit()
# 关闭Cursor对象
cs1.close()
# 关闭Connection连接
conn.close()
if __name__ == '__main__':
main()
#开始增删改查
def main():
# 创建Connection连接
conn = pymysql.connect(host='localhost', port=3306 , user='root', password='sh99', database='student',charset='utf8')
# 获取Cursor对象
cs1 = conn.cursor()
#--------------------------------------------------------------------------------------------------------------------------
#创建表----------------------------------------------------
count = cs1.execute("CREATE TABLE std (pNo varchar(16) primary key, pName varchar(16), pChinese float, pMath float, pEnglish float)")
# 增加数据------------------------------------------------
# # 执行insert语句,并返回受影响的行数:添加一条数据
# #单个增加
# count = cs1.execute('insert into std (pNo,pName,pChinese,pMath,pEnglish) values (1,"张三",90,95,98)')
# #批量增加
# sql = "INSERT INTO std (pNo,pName,pChinese,pMath,pEnglish) VALUES (%s,%s,%s,%s,%s)"
# val = [
# (2,"李四",87,86,78),
# (3,"张五",65,86,88),
# (4,"王六",95,89,97)
# ]
# count = cs1.executemany(sql, val)
# 打印受影响的行数
print("受到影响的是%d条数据"%count)
# 更改数据--------------------------------------------------
#count = cs1.execute('update std set pNo=5 where pNo=2')
# 打印受影响的行数
print("受到影响的是%d条数据"%count)
# 删除数据 -------------------------------------------------
#count = cs1.execute('delete from std where pNo=5')
# 打印受影响的行数
print("受到影响的是%d条数据"%count)
#----------------------------------------------------------------------------------------------------------------------------
# 提交之前的操作,如果之前已经执行过多次的excute,那么就都进行提交
conn.commit()
# 关闭Cursor对象
cs1.close()
# 关闭Connection连接
conn.close()
if __name__ == '__main__':
main()

3 对象的方法

方法名说明: close(): 关闭连接

commit(): 提交

cursor(): 返回 Cursor 对象,用于执行 sql 语句并获得结果

Cursor 对象用于执行 sql 语句,使用频率最高的语句为 select、insert、update、delete 获取 Cursor 对象:调用 Connection 对象的 cursor()方法

close(): 关闭

execulte(operation [,parameters])执行语句,返回受影响的行数,主要用于执行 insert、update、delete 语句,也可以执行 create、alter、drop 等语句

fetchone(): 执行查询语句时,获取查询结果集的第一行数据,返回一个元组

fetchall(): 执行查询时,获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组作为返回

4 作业

1.简述 Python 连接 MySQL 数据库的方法?

2.fetchone()怎么样判断读到数据库末尾?

3.fetchall()与 fetchone()有什么区别?

4.rowcount()返回值代表什么?

5.MySQL 中怎么样使用带参数的 SQL 命令?

6.数据库操作完成后为什么要调用 commit()函数?

7.什么是游标 cursor,它有什么作用?