欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

手牵手带你掌握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类(数据库表映射类)。

手牵手带你掌握Flask项目开发(二):连接数据库

下面是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进行数据的增删改查,并实现一个简单的登录功能。