Flask-SQLAlchemy 根据数据库中已有的表建立Model对象

官方文档

配置信息

class Config(object):
    """配置参数"""
    #sqlalchemy的配置参数 连接到数据库
    SQLALCHEMY_DATABASE_URI="[1 数据库类型]://[2 用户名]:[3 密码]@[4 数据库所在IP]:[5 端口号]/[6 数据库名]"
    #设置sqlalchemy自动跟踪数据库
    SQLALCHEMY_TRACK_MODIFICATIONS=True
app.config.from_object(Config)

1 填 mysql
2 3 4 5 6 填数据库相关信息





官方文档以及很多博客举的例子都是连接数据库后,通过建立Model向数据库中创建新表,然后进行相关数据库操作:

建立对象

class User(db.Model):
	__tablename__ ="user_table"  # 将要创建的表名
    id = db.Column(db.Integer, primary_key=True)
    password = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

创建对应表

>>> from yourapplication import db
>>> db.create_all()  # 创建表

向表中写入数据

>>> from yourapplication import User
>>> admin = User('admin', 'admin@example.com') # 创建用户
>>> guest = User('guest', 'guest@example.com')
>>> db.session.add(admin) # 写入临时区
>>> db.session.add(guest)
>>> db.session.commit()  # 正式提交到数据库 有点像git工作机制

现在数据库中将存在一个名为“user_table”,拥有id,password,email三个属性列的表,且已写入两行数据。

idpasswordemail
1adminadmin@example.com
2guestguest@example.com

这样Model的每个属性和数据库中每一列属性都是一一对应的,比如:

>>> admin.id
>>> admin
>>> admin.email
>>> admin@example.com








而反过来,如果把数据库中已有的表映射为Model进行操作时,需要注意:

每一属性特性必须都列出来

比如说,数据库表中各列的数据类型、是否为主键、是否为空等等配置如图所示
在这里插入图片描述
那么对应Model对象中各个属性特性都不可省略,并且变量名与列名一致,否则会出现各种错误。

class User(db.Model):
    __tablename__ ="user_table"
    id=db.Column(db.Integer,primary_key=True,unique=True,nullable=False)
    email=db.Column(db.VARCHAR(45),unique=True,primary_key=True,nullable=False)
    password=db.Column(db.VARCHAR(45),nullable=False)
在 Flask 使用 SQLAlchemy 连接已有数据库,需要在 Flask 项目进行如下配置: 1. 安装 SQLAlchemy: ``` pip install SQLAlchemy ``` 2. 在 Flask 项目创建一个 config.py 文件,添加数据库连接信息: ```python SQLALCHEMY_DATABASE_URI = 'mysql://username:password@hostname/database' SQLALCHEMY_TRACK_MODIFICATIONS = False ``` 其,`SQLALCHEMY_DATABASE_URI` 数据库连接信息,`SQLALCHEMY_TRACK_MODIFICATIONS` 示是否追踪数据库修改,默认为 True,我们可以手动设置为 False。 3. 在 Flask 项目创建一个 models.py 文件,定义数据模型: ```python from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(20)) age = db.Column(db.Integer) ``` 4. 在 Flask 项目的 __init__.py 文件初始化 db: ```python from flask import Flask from config import SQLALCHEMY_DATABASE_URI from models import db app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = SQLALCHEMY_DATABASE_URI app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db.init_app(app) ``` 5. 在 Flask 项目创建一个 manage.py 文件,定义命令行操作: ```python from flask_script import Manager from models import db, User from app import app manager = Manager(app) @manager.command def create_all(): db.create_all() if __name__ == '__main__': manager.run() ``` 6. 在命令行执行 `python manage.py create_all` 命令,创建数据库。 以上就是在 Flask 连接已有数据库的步骤。需要注意的是,连接数据库的 URI 需要根据实际情况进行调整,例如,如果使用的是 MySQL 数据库,则需要将 URI 的 `mysql` 替换为 `mysql+pymysql`。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值