前言
数据库在 Web 开发中起着至关重要的作用。它不仅提供了数据的持久化存储和管理功能,还支持数据的关联和连接,保证数据的一致性和安全性。通过合理地设计和使用数据库,开发人员可以构建强大、可靠的 Web 应用程序,满足用户的需求。这里介绍:SQLAlchemy
一、SQLAlchemy安装
安装pymysql和SQLAlchemy,打开pycharm,打开终端,分别执行这两个命令
pip install pymysql
pip install SQLAlchemy
看到这样就是表示安装成功了
然后,执行这个命令检查SQLAlchemy是否正确安装,运行这个命令会输出版本号的。
python -c "import sqlalchemy; print(sqlalchemy.__version__)"
二、Flask-Migrate的安装和使用
Flask-Migrate是一个使用 Alembic 处理 Flask 应用程序的 SQLAlchemy 数据库迁移的扩展。数据库操作可通过 Flask 命令行界面进行。Flask-Migrate 是一个扩展,它以正确的方式配置 Alembic 以与 Flask 和 Flask-SQLAlchemy 应用程序配合使用。就实际的数据库迁移而言,一切都由 Alembic 处理,因此您可以获得完全相同的功能。
2.1、Flask-Migrate安装
使用pip安装,在开发工具的命令行里面执行
pip install Flask-Migrate
出现这样表示安装成功
2.2、Flask-Migrate使用
2.2.1、在__init__.py里面编写
# __init__.py 文件是一个特殊的文件,它在包的目录中起到了重要的作用 # 主要作用如下: # 声明包:__init__.py 文件的存在将目录标识为一个包。它告诉 Python 解释器该目录是一个包,并且可以在该目录中使用包的相关功能。 # 初始化模块:__init__.py 文件可以包含初始化代码,当导入包时,这些代码将在包的命名空间中执行。这些初始化代码可以用于设置包的环境、导入子模块或执行其他必要的操作。 # 控制导入行为:__init__.py 文件可以控制包的导入行为。通过在 __init__.py 文件中定义 __all__ 变量,可以指定导入包时应该导入的模块列表。这样可以控制模块的可见性和公开的接口。 # 提供包级别的功能:__init__.py 文件可以包含包级别的变量、常量、函数或类,这些可以在包内的其他模块中使用。
from flask import Flask
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from .config import Config
app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
2.2.2、在config.py里面编写
import os
class Config(object):
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_RECORD_QUERIES = True
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
'sqlite:///' + os.path.join(BASE_DIR, 'database.sqlite')
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_ECHO = True
2.2.3、在models.py里面编写
单个点号(.
)表示当前目录或当前模块
from . import db
class User(db.Model):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(50), unique=True, nullable=False)
password = db.Column(db.String(255), nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
name = db.Column(db.String(50), unique=True, nullable=False)
created_at = db.Column(db.DateTime, nullable=False)
2.2.4、在app.py里面编写
from datetime import datetime
from flask import Flask, request, jsonify
from .Response.ResMsg import ResMsg
from .models import User
from . import app, db
@app.route("/login", methods=["POST", "GET"])
def login():
# get username and password form json post
username = request.json.get("username")
password = request.json.get("password")
if username == "admin" and password == "123456":
# 假设登录成功后你已经获得了相应的用户名、密码和电子邮件
username = "sandy"
password = "123456"
email = "sady@gmail.com"
# 创建 User 对象并设置字段值
new_user = User(
username=username,
password=password,
email=email,
name="Sandy",
created_at=datetime.now()
)
# 将新用户对象添加到数据库会话中
db.session.add(new_user)
# 提交会话以保存更改到数据库
db.session.commit()