在实际使用 Python 的过程中,肯定会使用到Python 操作 mysql数据库。
首先要下载 PyMysql 库:
pip install PyMysql
安装好以后就可以在代码中进行引入了。
import pymysql
操作数据库的步骤如下:
- 通过
connect
函数连接对应的数据库- 生成
游标对象
- 以字符串形式
组装
SQL 语句- 使用游标
执行
SQL 语句- 从游标中读取数据
以本机上的 ecshop 数据库为例:
'''
连接数据库,需要如下参数:
host: 数据库服务器地址,本机为localhost
port: 端口,默认为3306,注意必须是整数(不能加引号)
user: 数据库账号,如root
password: 密码,没有密码也必须要传值,传空字符串''即可
db: 数据库名,这里是ecshop
cursorclass:游标返回的数据类型,默认为二维元组,
可以使用pymysql.cursors.DictCursor 改为字典形式
'''
import pymysql
# 建立连接
db = pymysql.connect(host='127.0.0.1',user='root',password='123456',db='ecshop')
# 有默认值的参数可以不用传参
# 生成游标
cur = db.cursor()
# 构造sql语句
sql = 'SELECT user_name, email FROM ecs_users' # 查询账号和邮箱
# 使用游标执行sql语句
cur.excute(sql)
# 此时查询出的数据会保存在游标中
# 读取内容
# 一条一条读
print(cur.fetchone())
# ('nemo', 'asdf@1.com')
# 注意这是一个迭代器,下次再执行时
# 会读取下一条数据
# 读取全部
print(cur.fetchall())
# (('nemo', 'asdf@1.com'), ('nemo6', 'nemo5@2.com'))
# 记住关闭游标和数据库连接
cur.close()
db.close()
尝试:
- 还记得函数参数中参数收集的逆过程么?尝试实现
connect(**db_config)
注:db_config 是一个字典- 把上面的数据库处理过程封装成一个函数
get_sql_data
,实现传入一个sql语句,然后返回该数据查询的所有结果。sql = 'SELECT user_name, email FROM ecs_users' print(get_sql_data(sql)) # (('nemo', 'asdf@1.com'), ('nemo6', 'nemo5@2.com'))
注:使用异常处理,避免数据库操作过程出现异常导致,
db.close()
不能正常执行。