mysql flaskalchemy_Flask中sqlalchemy模块的实例用法

一、安装

$ pip install flask-sqlalchemy

二、配置

配置选项列表 :

5b7edc5d0c17acb106828b0d656798ba.png

SQLALCHEMY_NATIVE_UNICODE | 可以用于显式禁用原生 unicode 支持。当使用 不合适的指定无编码的数据库默认值时,这对于 一些数据库适配器是必须的(比如 Ubuntu 上某些版本的 PostgreSQL )。|

| SQLALCHEMY_POOL_SIZE | 数据库连接池的大小。默认是引擎默认值(通常 是 5 ) |

| SQLALCHEMY_POOL_TIMEOUT | 设定连接池的连接超时时间。默认是 10 。 |

| SQLALCHEMY_POOL_RECYCLE | 多少秒后自动回收连接。这对 MySQL 是必要的, 它默认移除闲置多于 8 小时的连接。注意如果 使用了 MySQL , Flask-SQLALchemy 自动设定这个值为 2 小时。|

app.config["SQLALCHEMY_DATABASE_URI"] = DATABASE_URI

app.config["SQLALCHEMY_COMMIT_ON_TEARDOWN"] = True/False  # 每次请求结束后都会自动提交数据库中的变动.

app.config[""] =

app.config[""] =

app.config[""] =

app.config[""] =

DATABASE_URI :

mysql : mysql://username:password@hostname/database

pgsql : postgresql://username:password@hostname/database

sqlite(linux)  : sqlite:absolute/path/to/database

sqlite(windows) : sqlite:///c:/absolute/path/to/database

三、初始化示例

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

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

app = Flask(__name__)

app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///' + os.path.join(base_dir, 'data.sqlite')

app.config["SQLALCHEMY_COMMIT_ON_TEARDOWN"] = True

db = SQLAlchemy(app)

四、定义模型

模型 表示程序使用的持久化实体. 在 ORM 中, 模型一般是一个 Python 类, 类中的属性对应数据库中的表.

Flaks-SQLAlchemy 创建的数据库实例为模型提供了一个基类以及一些列辅助类和辅助函数, 可用于定义模型的结构.

db.Model    # 创建模型,

db.Column   # 创建模型属性.

模型属性类型 :

bf25b766bc33c0e504ec32a71116cad3.png

常用 SQLAlchemy 列选项

cf53b589a0f358c725778f75a0152b28.png

示例 :

class Role(db.Model):

__tablename__ = "roles"

id = db.Column(db.Integer, primary_key=True)

name = db.Column(db.String(64), unique=True)

def __repr__(self):

"""非必须, 用于在调试或测试时, 返回一个具有可读性的字符串表示模型."""

return '' % self.name

class User(db.Model):

__tablename__ = 'users'

id = db.Column(db.Integer, primary_key=True)

username = db.Column(db.String(64), unique=True, index=True)

def __repr__(self):

"""非必须, 用于在调试或测试时, 返回一个具有可读性的字符串表示模型."""

return '' % self.username

五、关系

关系型数据库使用关系把不同表中的行联系起来。

常用 SQLAlchemy 关系选项:

1ec14b4e578225deb5de7c111479bbb2.png

(1)一对多

原理 : 在 “多” 这一侧加入一个外键, 指定 “一” 这一侧联结的记录.

示例代码 : 一个角色可属于多个用户, 而每个用户只能有一个角色.

class Role(db.Model):

# ...

users = db.relationship('User', backref='role')

class User(db.Model):

# ...

role_id = db.Column(db.Integer, db.Foreign

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个完整的 Flask 应用程序,使用 Flask-SQLAlchemy 连接 MySQL 数据库的示例: 首先,安装必要的依赖: ``` pip install flask flask_sqlalchemy pymysql ``` 然后,在您的 Flask 应用程序文件,导入必要的模块: ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy import pymysql ``` 接下来,创建一个 Flask 应用程序实例并配置 MySQL 数据库连接: ```python app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://<username>:<password>@<hostname>/<dbname>' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) ``` 在上面的代码,您需要将 `<username>`, `<password>`, `<hostname>` 和 `<dbname>` 替换为您的 MySQL 数据库的实际值。 然后,创建一个模型类来表示您的数据库表: ```python class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50)) email = db.Column(db.String(120), unique=True) def __repr__(self): return '<User %r>' % self.name ``` 最后,启动 Flask 应用程序并进行测试: ```python if __name__ == '__main__': app.run(debug=True) ``` 完整的示例代码如下: ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy import pymysql app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://<username>:<password>@<hostname>/<dbname>' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50)) email = db.Column(db.String(120), unique=True) def __repr__(self): return '<User %r>' % self.name if __name__ == '__main__': app.run(debug=True) ``` 注意,您需要先在 MySQL 数据库创建一个名为 `<dbname>` 的数据库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值