vlambda博客
学习文章列表

Flask干货:访问数据库——Python数据库框架MySQL-Python



Flask干货:访问数据库——Python数据库框架MySQL-Python


图 | 源网络
文 | 5号程序员



上一次我们学会了数据库安装,但只是安装好没教大家怎么使用!


嘿,别担心,这不有我呢嘛。


Flask干货:访问数据库——Python数据库框架MySQL-Python


今天就由我给大家介绍介绍框架MySQL-Python





01


MySQL-Python安装


框架也是库,所以跟其他库安装一样,在虚拟环境下输入

pip install pymysql

进行安装,如果安装不成功,试试镜像安装:

pip install –i https://pypi.tuna.tsinghua.edu.cn/simplepymysql

安装好以后就能通过python操作数据库了。


Flask干货:访问数据库——Python数据库框架MySQL-Python




02



通过Python操作数据库对象


1、创建MySQL连接对象

开启MySQL自带命令行,输入命令create database wuhao; 创建名为“wuhao”的数据库,并用命令 show databases; 查看。


创建数据库成功后,我们相当于拥有一个仓库啦,但里面还啥都没有,没有分区、没有货物、没有标号… …啥都没有,所以还要建立一张表,相当于在仓库分个区。


Flask干货:访问数据库——Python数据库框架MySQL-Python


先用命令 use wuhao; 切换到数据库下,表示你已经进入到仓库里面了;再用命令 create table user(username varchar(30), email varchar(50)); 创建名为“user”的表格和username、email字段,表示你在仓库中划分出一个区域,同时在区域内又分成多个小格用来存放指定货物。


Flask干货:访问数据库——Python数据库框架MySQL-Python


万事俱备,可以往仓库搬货喽!


使用命令 insert into user values (‘No5Programmer’, ‘[email protected]’); 添加测试数据,并用命令select * from user; 查看,结果如图:


Flask干货:访问数据库——Python数据库框架MySQL-Python


然后新建app.py文件,内容如下:

from flask import Flaskimport pymysqlpymysql.install_as_MySQLdb()
app = Flask(__name__)conn = pymysql.Connect( host = '127.0.0.1', port = 3306, user = 'root', passwd = 'root', db = 'wuhao', charset = 'utf8')

使用import导入pymysql,然后建立数据库连接对象conn。参数说明如下:

  • user:登录数据库的用户名,该参数不能为空

  • passwd:录数据库的密码,该参数可以为空

  • db:连接的数据库的名称,该参数不能为空

  • charset:字符集编码,注意不加“-”,该参数不能为空

Python建立与数据的连接,事实上是建立一个MySQLdb.connect()的连接对象,通过连接对象就能和数据库进行数据交互。常用的方法有下面4种:

  • cursor():创建游标对象并返回

  • commit():提交当前事务操作,对数据库的增、删、改、查先保存到缓存里,当执行此方法时再提交给数据库

  • rollback():回滚当前事务操作,取消前面操作

  • close():关闭数据库连接

 

2、获取游标对象

建立连接后,操作数据库就需要让Python对数据库执行SQL语句。


想象一下,现在是程序自己在用鼠标点击目标文件,所以首要任务是先找到游标,获得游标对象。

cursor = conn.cursor()sql = "select * from user"cursor.execute(sql)


上面的第一行代码就获取了游标,然后用execute()操作。

 

3、获取所有记录列表

在上面代码的基础上继续编写:

results = cursor.fetchall()for row in results: username = row[0] email = row[1] print("emial=%s, username=%s" % (email, username))cursor.close()conn.close()

可以看出,程序在遍历user表格中的数据并进行打印。除了代码中用到的方法,cursor对象还支持下列方法:

  • execute():用于执行一个数据库的查询命令

  • fetchone():获取结果集中的下一行

  • fetchmany(size):获取结果集中的下(size)行

  • fetchall():获取结果集中剩下的所有行

  • rowcount():最近一次执行数据库查询命令后,返回数据的行数

  • close():关闭游标




03


实战


完整的app.py代码如下:

from flask import Flaskimport pymysqlpymysql.install_as_MySQLdb()
app = Flask(__name__)conn = pymysql.Connect( host = '127.0.0.1', port = 3306, user = 'root', passwd = 'root', db = 'wuhao', charset = 'utf8')
cursor = conn.cursor()sql = "select * from user"cursor.execute(sql)results = cursor.fetchall()for row in results: username = row[0] email = row[1] print("emial=%s, username=%s" % (email, username))cursor.close()conn.close()
@app.route('/')def index(): return 'Hello World!'
if __name__ == '__main__': app.run()

运行后可以看到如下结果:


Flask干货:访问数据库——Python数据库框架MySQL-Python


成功!因为用的print(),所以是在命令行打印。




04


这次的内容主要是学习如何连接数据库,关键点在于获取游标对象,有游标才能控制,就像我们自己在操作一样。


下一次将说说如何更新数据,对数据库进行增、删、改、查。

 

你确定不关注我一波?




Flask干货:访问数据库——Python数据库框架MySQL-Python


- END -