手牵手带你掌握Flask项目开发(二):连接数据库
程序员文章站
2024-03-21 18:32:52
...
手牵手带你掌握Flask项目开发(二):连接数据库
前言
虽然搭建好了框架,但是一下子把框架所包含的所有要素都说清楚,也不是一篇博客能说的完的。所以在这儿,我基于一个web项目从开发到测试到部署的顺序,一步一步带你开发一个flask论坛项目。
1. 引入基础依赖包
连接数据库时我们需要用到flask的数据库操作工具:flask-sqlalchemy。
安装命令为:
pip install flask-sqlalchemy
由于我们使用的数据库是mysql数据库,所以还需要安装python3的mysql数据库驱动。
安装命令为:
pip install pymysql
2. 测试数据库连接
为了避免在使用sqlalchemy时出现频繁的报错,在进行正式的数据库连接之前,我们需要先进行数据库连接测试。
以下是一个数据库连接测试文件:
import pymysql
if __name__ == '__main__':
# 下面是数据库连接语句,其中包含的参数分别为:数据库地址,用户名,密码,要连接的数据库,数据库端口(默认为3306,数据类型为int,可不输入)
db = pymysql.connect("host", "user", "password", "database", port)
# 连接成功输出语句
print("连接成功")
# 关闭连接,完成测试
db.close()
配置好参数后,运行代码,若控制台输出”连接成功“则参数配置正确;若控制台报错则说明参数配置出错。
3. 配置flask-sqlalchemy并创建数据库表
接下来我们进行flask-sqlalchemy的配置。下面是一个简单配置flask-sqlalchemy的flask启动文件:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql
app = Flask(__name__)
# 将pymysql安装为mysql数据库驱动
pymysql.install_as_MySQLdb()
# 数据库用户名
user = "user"
# 数据库密码
password = "password"
# 数据库连接ip和端口
ip = "127.0.0.1:3306"
# 需要连接的数据库名
database = "flask"
# 拼接数据库连接uri
SQLALCHEMY_DATABASE_URI = "mysql://{}:{}@{}/{}".format(user, password, ip, database)
# 在flask中配置数据库uri
app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
# 在flask中配置sqlalchemy对对象修改进行追踪,并发送信号
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
# 生成sqlalchemy对象(必须放在config后面,否则以上配置不会生效)
db = SQLAlchemy(app)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
配置好启动文件后,我们把以上文件(app.py)放在app包下,然后在app包下新建model包,开始创建model类(数据库表映射类)。
下面是model类(user.py)的代码:
from app.app import db # 将app.py中配置好的db对象引用到model类中
# 所有model类都要继承sqlalchemy中自带的Model类
class User(db.Model):
__tablename__ = "user" # 生成(映射)的数据库表名称
__table_args__ = {"useexisting": True} # 防止表存在时重复生成表
id = db.Column(db.INTEGER, primary_key=True, autoincrement=True) # user表主键
username = db.Column(db.String(25), unique=True, nullable=False) # 用户名
password = db.Column(db.String(25), nullable=False) # 密码
is_enable = db.Column(db.INTEGER, default="1", nullable=False) # 用户状态:1为启用,0为禁用
create_time = db.Column(db.DateTime, nullable=False) # 创建时间
update_time = db.Column(db.DateTime, nullable=False) # 修改时间
# 调用类对象输出时返回结果
def __repr__(self):
return '<User %r>' % self.username
接下来我们在app包下新建util包,在util包中创建db_util.py来对model包中的类进行数据库表的生成:
from app.app import db
from app.model import user
if __name__ == '__main__':
# 对user类进行实例化
model = user
# 将实例化后的类所对应的数据库表删除
db.drop_all()
# 建立实例化的类所对应的数据库表
db.create_all()
结语
以上是一个简单的,使用flask-sqlalchemy对数据库进行连接并创建表的操作。
下一篇将会介绍如何通过flask-sqlalchemy进行数据的增删改查,并实现一个简单的登录功能。
db.create_all()
## 结语
以上是一个简单的,使用flask-sqlalchemy对数据库进行连接并创建表的操作。
下一篇将会介绍如何通过flask-sqlalchemy进行数据的增删改查,并实现一个简单的登录功能。