目录
阅读本文章前,您需要了解的知识:
阅读本文章,您需要有以下基础:
- python 编程
- MySQL 数据库
pip安装pymysql
打开命令提示行,pip install pymysql
Pycharm导入pymysql第三方库
PyCharm与MySQL的连接
现在要从PyCharm里面找MySQL里的数据库,
学过MySQL的小伙伴就应该知道MySQL连接登录上去是有接口的(端口号和主机IP),
那现在我需要从PyCharm里面连接MySQL里的数据库,就只需要去找它的接口就行了
连接成功的标识
如果你想具体连上哪个数据库,就可以在条件后面加一个database=''
例如:
我的MySQL下面有一个db03数据库
游标cursor
在使用pymysql.connect() 方法与数据库建立连接后,想要操作数据库时,就需要使用游标 Cursor
什么是游标
游标,通俗来说就是“游动的标志”,
有时候,我们执行一条查询语句的时候,往往会得到N条返回结果,执行sql语句去除这些返回结果的接口,就是游标。沿着这个游标,我们可以一次取出一行记录。
举个栗子:
当不使用游标功能,去执行 select * from employee where salary > 3000 ; 这条语句时,如果有1000条返回结果,系统会一次性将1000条记录返回到界面中,你不能做选择,也不能做其他操作。
当我们开启了游标功能,再去执行这条语句的时候,系统会先帮你找到这些行,先给你存放起来,然后提供一个游戏接口。当你需要数据的时候,就借助这个游标去一行行的取出数据,你每取出一条记录,游标指针就朝前移动一次,一直到取完最后一行数据。
当我们使用python连接MySQL的时候,那么python就相当于是MySQL服务器的一个客户端,我们利用python这个client去操作MySQL的server
在pymysql中操作数据库,就是使用游标这种方式来获取表中的数据。
游标的使用
连接数据库之后,使用 cursor = conn.cursor() 开启游标功能,创建游标对象
cursor = conn.cursor()
使用 execute() 方法,执行SQL语句。当开启游标功能执行这个SQL语句后,系统并不会将结果直接打印到频幕上,而是将上述得到的结果,找个地方存储起来,提供一个游标接口给我们,当你需要获取数据的时候,就可以从中拿数据
cursor.execute('select * from employee')
获取数据
使用 fetchone() 或 fetchall() 获取数据
(1) fetchone()
拿employee数据表做个比方
# 一次性获取一条数据
result = cursor.fetchone()
使用游标获取数据,可以用一个变量将结果存储起来,方便被我们拿来做二次使用
(2) fetchall()
# 一次性获取所有数据
result = cursor.fetchall()
断开连接
当我们不用的时候,要断开数据库的连接,养成一个好习惯
conn.close()
例子
一种写法:
import pymysql # 导入库
# 连接MySQL
conn = pymysql.connect(
host='localhost',port=3306,user='root',
password='password',charset='utf8',database='db03')
#print(conn)
# 创建游标对象
cursor = conn.cursor()
# 获取数据
sql = 'select * from employee where sex = \'女\' ;'
a = cursor.execute(sql)
result = cursor.fetchall()
for i in result:
print(i)
# 关闭连接
cursor.close()
conn.close()
输出结果 :
另一种写法:
import pymysql # 导入库
def add_del_update(sql):
conn = pymysql.connect(
host='localhost',port=3306,user='root',
password='password',charset='utf8',database='db03')
cursor = conn.cursor()
try:
cursor.execute(sql)
result = cursor.fetchall()
for i in result:
print(i)
except:
conn.rollback() # 如果发生错误则回滚
print('操作失败')
cursor.close()
conn.close()
sql = "select * from employee where sex = '男';"
add_del_update(sql)
输出结果 :