首页 > 数据库 >Flask-SQLAlchemy 连接数据库

Flask-SQLAlchemy 连接数据库

时间:2023-01-11 21:12:50浏览次数:62  
标签:SQLAlchemy Flask 数据库 db MySQL import

(一) 前言

SQLAlchemy “采用简单的 Python 语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”。SQLAlchemy 是目前 Python 中最强大的 ORM 框架,功能全面。

Flask-SQLAlchemy 是一个为您的 Flask 应用增加 SQLAlchemy 支持的扩展,它封装了 SQLAlchemy,简化了在 Flask 中 SQLAlchemy 的使用。

(二) 连接 SQLite

SQLite 它基于文件,不需要单独启动数据库服务器,适合在开发时使用,或是在数据库操作简单、访问量低的程序中使用。

使用 Flask-SQLAlchemy 连接 SQLite 比较简单,如下示例:

1. 初始化配置

config.py 文件

import os
import sys


# 在扩展类实例化之前设置好配置项
WIN = sys.platform.startswith('win')
if WIN:
    # 如果是 Windows 系统,则使用三个斜线
    prefix = 'sqlite:///'
else:
    # 否则使用四个斜线
    prefix = 'sqlite:////'

basedir = os.path.abspath(os.path.dirname(__file__))


class Config(object):
    SQLALCHEMY_DATABASE_URI = prefix + os.path.join(basedir, 'data.db')
    SQLALCHEMY_TRACK_MODIFICATIONS = False

2. 使用示例

app.py 文件

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import click
from config import Config


app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    password_hash = db.Column(db.String(128))


# 自定义命令来创建数据库表
@app.cli.command()
@click.option('--drop', is_flag=True, help='Create after drop.')
def initdb(drop):
    if drop:
        db.drop_all()
    db.create_all()

    click.echo('创建数据库表完成')

3. 创建数据库表的相关说明

  • 模型类创建后,还不能对数据库进行操作,因为我们还没有创建表和数据库文件
  • 由于已经自定义了命令来创建数据库表,因此不需要通过 flask shell 进入交互模式,手动导入相关模块,接着手动创建数据库表
  • 在命令行下,使用命令 flask initdb 就可以创建数据库表了
  • 连接 SQLite 的情况下,如果本地不存在对应的数据库文件,那么 Flask-SQLAlchemy 将会先自动的创建数据库文件,然后再创建数据库表

(三) 连接 MySQL

使用 Flask-SQLAlchemy 连接 MySQL,如下示例:

1. 初始化配置

config.py 文件

mysql_local_base = 'mysql+pymysql://{username}:{password}@{host}:{port}/{database}?charset=utf8'.format(
    username='root', password='123456', host='127.0.0.1', port='3306', database='datatest'
)


class Config(object):
    SQLALCHEMY_DATABASE_URI = mysql_local_base
    SQLALCHEMY_TRACK_MODIFICATIONS = False

image

2. 使用示例

app.py 文件

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import click
from config import Config


app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    password_hash = db.Column(db.String(128))


# 自定义命令来创建数据库表
@app.cli.command()
@click.option('--drop', is_flag=True, help='Create after drop.')
def initdb(drop):
    if drop:
        db.drop_all()
    db.create_all()

    click.echo('创建数据库表完成')

3. 启动 MySQL 数据库服务器

更具体的请查看博客 MySQL的安装、安装过程遇到的问题以及可视化客户端的使用

在 Windows 下启动 MySQL 数据库服务器:

1. 以管理员的身份运行 cmd 命令行工具
2. 然后通过命令行切换到 MySQL 解压后的 bin 目录里面
3. 启动 MySQL 服务器命令:
    net start mysql

4. 操作 MySQL 数据库服务器的方式

  1. 命令行操作
    用管理员身份运行 cmd
    进入 MySQL 的命令行 mysql -u root -p
    输入创建数据库的命令 create database library
    ...
  2. 使用 MySQL 客户端,图形化管理工具(推荐)
    HeidiSQL (有 安装版 和 免安装版)
    https://www.heidisql.com/download.php

5. 相关说明

  • 使用 Flask-SQLAlchemy 连接 MySQL,Flask-SQLAlchemy 不能直接创建库,只能进行表级别的操作。因此,需要我们【手动创建数据库】。
  • 由于连接 MySQL 需要驱动包 pymysql,所以需要先安装驱动。pip install pymysql

(四) 连接 SQLite 或 MySQL 的区别

使用 Flask-SQLAlchemy 连接 SQLite 或 MySQL,只是配置项之间的差异,其它代码保持一致即可。

标签:SQLAlchemy,Flask,数据库,db,MySQL,import
From: https://www.cnblogs.com/wanghuizhao/p/17044904.html

相关文章

  • 《Spring in action 4》(八)Spring和JDBC操作数据库
    Spring和JDBC操作数据库文章目录​​Spring和JDBC操作数据库​​​​使用JNDI配置数据源​​​​使用JDNI方式访问数据库​​​​1.POM依赖​​​​2.Tomcatcontext.xml......
  • 数据库——范式等级的判断和规范化
    理解1NF、2NF、3NF、BCNF第一范式1NF满足:一个关系模式R的所有属性都是不可分的基本数据项,即为第一范式第二范式2NF满足:为1NF且非主属性完全函数依赖于码......
  • KingbaseES V8R3数据库运维案例之---不完整的启动包(incomplete startup packet)复现
    案例说明:在KingbaseESV8R3数据库的sys_log日志中,出现以下故障信息“不完整的启动包(incompletestartuppacket)”日志信息。本案例复现此日志信息发生的原因。如下图所示......
  • Redis-多机数据库-复制
    复制在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器(master),而对主服务器进行复制的......
  • 数据库第二天(概述)
    视频笔记这章可能很多都看不太懂,后面学完之后再回来看一眼会更有感悟。......
  • 【postgresql】创建用户与数据库
    创建用户与数据库--cxlogepostgres--创建用户createusercxlogewithpassword'password';--创建数据库并指定拥有者createdatabasecxlogeownercxloge;--给指......
  • SQLSERVER自动备份数据库
    1.通过操作系统的定时任务执行创建两个文件,auto.bat和auto.sql,使用bat调用sql文件中的代码段auto.bat内容sqlcmd-Slocalhost,2433-Usa-PAa@123456-ddbname-i......
  • Redis-单机数据库-服务器
    服务器命令请求的执行过程客户端发送命令请求当客户端与服务器之间的连接套接字因为客户端的写入而变得可读时,服务器将调用命令请求处理器来执行以下操作:读取套接字中......
  • 大学数据库笔记
    这里是原word笔记源文件当时大学的时候,学习数据库基本是班级里的第一名,但是毕业以后就做了前端从此几乎与后端无缘,为了纪念曾经的努力,在整理旧资料时候,特意拿出来,留个痕......
  • SpringBoot+Mybatis-plus整合easyExcel批量导入Excel到数据库+导出Excel
    一、前言今天小编带大家一起整合一下easyExcel,之所以用这个,是因为easyExcel性能比较好,不会报OOM!市面上常见的导入导出Excel分为三种:hutooleasyExcelpoihutool和eas......