Flask干货:访问数据库——Python数据库框架MySQL-Python
上一次我们学会了数据库安装,但只是安装好没教大家怎么使用!
嘿,别担心,这不有我呢嘛。
今天就由我给大家介绍介绍框架MySQL-Python。
MySQL-Python安装
框架也是库,所以跟其他库安装一样,在虚拟环境下输入
pip install pymysql
进行安装,如果安装不成功,试试镜像安装:
pip install –i https://pypi.tuna.tsinghua.edu.cn/simplepymysql
安装好以后就能通过python操作数据库了。
通过Python操作数据库对象
1、创建MySQL连接对象
开启MySQL自带命令行,输入命令create database wuhao; 创建名为“wuhao”的数据库,并用命令 show databases; 查看。
创建数据库成功后,我们相当于拥有一个仓库啦,但里面还啥都没有,没有分区、没有货物、没有标号… …啥都没有,所以还要建立一张表,相当于在仓库分个区。
先用命令 use wuhao; 切换到数据库下,表示你已经进入到仓库里面了;再用命令 create table user(username varchar(30), email varchar(50)); 创建名为“user”的表格和username、email字段,表示你在仓库中划分出一个区域,同时在区域内又分成多个小格用来存放指定货物。
万事俱备,可以往仓库搬货喽!
使用命令 insert into user values (‘No5Programmer’, ‘[email protected]’); 添加测试数据,并用命令select * from user; 查看,结果如图:
然后新建app.py文件,内容如下:
from flask import Flask
import pymysql
pymysql.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():关闭游标
实战
完整的app.py代码如下:
from flask import Flask
import pymysql
pymysql.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()
def index():
return 'Hello World!'
if __name__ == '__main__':
app.run()
运行后可以看到如下结果:
成功!因为用的print(),所以是在命令行打印。
这次的内容主要是学习如何连接数据库,关键点在于获取游标对象,有游标才能控制,就像我们自己在操作一样。
下一次将说说如何更新数据,对数据库进行增、删、改、查。
你确定不关注我一波?