首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在SQLAlchemy中为Flask创建具有自动递增主键的关联表?

在SQLAlchemy中为Flask创建具有自动递增主键的关联表,可以通过以下步骤实现:

  1. 首先,确保已经安装了SQLAlchemy和Flask扩展。可以使用pip命令进行安装:
代码语言:txt
复制
pip install SQLAlchemy Flask
  1. 在Flask应用程序的主文件中,导入必要的模块:
代码语言:txt
复制
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
  1. 创建Flask应用程序实例,并配置数据库连接信息:
代码语言:txt
复制
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = '数据库连接字符串'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

其中,数据库连接字符串需要替换为实际的数据库连接信息,如MySQL、PostgreSQL等。

  1. 初始化SQLAlchemy扩展:
代码语言:txt
复制
db = SQLAlchemy(app)
  1. 定义模型类,包括关联表和主表:
代码语言:txt
复制
class Parent(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    children = db.relationship('Child', backref='parent', lazy=True)

class Child(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    parent_id = db.Column(db.Integer, db.ForeignKey('parent.id'), nullable=False)

在上述代码中,ParentChild分别表示主表和关联表。id字段使用db.Column定义为整数类型,并设置为主键。children字段在Parent模型中使用db.relationship定义与Child模型的关联关系。

  1. 创建数据库表格:
代码语言:txt
复制
db.create_all()
  1. 现在,可以在Flask应用程序中使用这些模型类进行数据库操作了。例如,可以创建一个新的父表记录和关联的子表记录:
代码语言:txt
复制
parent = Parent()
child = Child()
parent.children.append(child)
db.session.add(parent)
db.session.commit()

上述代码中,首先创建了一个新的Parent对象和Child对象,然后通过parent.children.append(child)将子表对象与父表对象关联起来。最后,使用db.session.add()将对象添加到会话中,并使用db.session.commit()提交更改到数据库。

这样,就可以在SQLAlchemy中为Flask创建具有自动递增主键的关联表了。

关于SQLAlchemy和Flask的更多详细信息和用法,请参考腾讯云的相关产品和文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Flask 学习-13.Flask-SQLAlchemy 新建模型和字段

前言 Flask-SQLAlchemy是一个Flask扩展,简化了在Flask应用中使用SQLAlchemy操作。...定义模型 在python代码创建一个类,每个类对应了一个数据库一张,类数据属性对应了字段名,这个类称为映射类。...'] = False # 是否显示底层执行SQL语句 app.config['SQLALCHEMY_ECHO'] = True # 初始化db,关联flask 项目 db = SQLAlchemy(...()进去 Time 传递datatime.time() 针对字段一些参数设置 参数 说明 primary_key 是否为主键 autoincrement 是否自动增长 unique 是否唯一 default...默认值 nullable 是否允许空 onupdate 更新时候执行函数 name 该属性在数据库字段映射 index 是否创建索引,提高查询效率 没有给对应字段类属性设置default

1.3K20

Flask-SQLAlchemy 对数据库过滤查询

Flask-SQLAlchemy ,指定查询条件是通过数据对象 query 对象来实现,query 对象实现了很多常用过滤方法,可以方便地实现过滤查询。 一、准备数据库和数据 1....创建一个 flask_alchemy_search.py 文件,编写连接数据库和模型类代码并运行,创建两个数据。...get() 传入一个存在主键值。...上面创建了两张数据,现在换一张查询,查询开头结尾都是 o 字母手机品牌,运行结果如下: [Phone_name: OPPO] 8. not_ 进行 逻辑非 查询 from sqlalchemy...[Phone_name: IPhone, Phone_name: Mi, Phone_name: HUAWEI] 四、Flask-SQLAlchemy 关系字段和关联查询 在上面创建两张,已经设置了关系字段

4.8K31

Flask入门第三天

列选项 primary_key:如果True,代表表主键 unique:如果True,代表这列不允许出现重复值 index:如果True,这列创建索引,提高查询效率 nullable:如果...在1查多 primary join:明确指定两个模型之间使用联结条件 uselist:如果False,不使用列表,而使用标量值 order_by:指定关系记录排序方式 secondary:指定多对多关系关系名字...python manage.py db init   4.2创建迁移脚本 自动创建迁移脚本有两个函数 upgrade():函数把迁移改动应用到数据库 downgrade():函数则将改动删除 自动创建迁移脚本会根据模型定义和数据库当前状态差异...Flask使用Blueprint让应用实现模块化,在Flask,Blueprint具有如下属性: - 一个应用可以具有多个Blueprint - 可以将一个Blueprint注册到任何一个未使用URL.../) - 在应用最终路由 url_map,在蓝图上注册路由URL自动被加上了这个前缀,这个可以保证在多个蓝图中使用相同URL规则而不会最终引起冲突, 只要在注册蓝图时将不同蓝图挂接到不同自路径即可

2.7K20

Flask入门到放弃(四)—— 数据库

日期和时间 LargeBinary str 二进制文件 常用SQLAlchemy列选项 选项名 说明 primary_key 如果True,代表表主键 unique 如果True,代表这列不允许出现重复值...而使用标量值 order_by 指定关系记录排序方式 secondary 指定多对多关系关系名字 secondary join 在SQLAlchemy无法自行决定时,指定多对多关系二级连条件...最基本查询是返回中所有数据,可以通过过滤器进行更精确数据库查询。 定义模型类 我们后面会把模型创建到单独文件,但是现在我们先把模型类写在manage.py文件。...python main.py db init 创建迁移版本 自动创建迁移版本有两个函数 upgrade():函数把迁移改动应用到数据库。 downgrade():函数则将改动删除。...自动创建迁移脚本会根据模型定义和数据库当前状态差异,生成upgrade()和downgrade()函数内容。

3K20

Flask 操作Mysql数据库 - flask-sqlalchemy扩展

官网文档 https://flask-sqlalchemy.palletsprojects.com/en/master/quickstart/ 数据库设置 Web应用普遍使用是关系模型数据库,关系型数据库把所有的数据都存储在...str 二进制文件 常用SQLAlchemy列选项 选项名 说明 primary_key 如果True,代表表主键 unique 如果True,代表这列不允许出现重复值 index 如果...True,这列创建索引,提高查询效率 nullable 如果True,允许有空值,如果False,不允许有空值 default 这列定义默认值 常用SQLAlchemy关系选项 选项名 说明...在视图函数定义模型类 看完了上面那么多概念说明,下面来看看如何创建数据模型以及创建数据,如下: 1.在脚本15_SQLAlchemy.py编写创建User和Role数据模型 from flask...关联查询角色所有用户: #查询rolesid1角色 role1 = Role.query.get(1) #查询该角色所有用户 role1.users 执行如下: In [25]: from

5.3K20

盘点Flask与数据库交互插件--Flask-Sqlalchemy

前言 在我们做web开发时候,经常需要用到与数据库交互,因为我们数据通常都是保存在数据库,如果有人需要访问,就必须与数据库访问,所以今天我们介绍一个Flask与数据库交互插件---Flask-Sqlalchemy...1.连接数据库 1).写在配置文件然后读取 首先创建一个配置文件"config.py",内容: db_type='mysql' db_conn='pymysql' host='127.0.0.1'...+pymysql://root:123456@127.0.0.1:3306/people' app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True # 每次请求结束后都会自动提交数据库变动...key 内部存储在 info 字典 即:info={'bind_key': 'users'} 2.建立数据并插入值 1).继承"db.Model"类 from flask_sqlalchemy...__name__,self.name) 可以看出我们已经创建出了一张关联,名字就是我们设置“glb”。

2.4K60

Flask 操作Mysql数据库 - flask-sqlalchemy扩展

官网文档 https://flask-sqlalchemy.palletsprojects.com/en/master/quickstart/ 数据库设置 Web应用普遍使用是关系模型数据库,关系型数据库把所有的数据都存储在...str 二进制文件 常用SQLAlchemy列选项 选项名 说明 primary_key 如果True,代表表主键 unique 如果True,代表这列不允许出现重复值 index 如果...True,这列创建索引,提高查询效率 nullable 如果True,允许有空值,如果False,不允许有空值 default 这列定义默认值 常用SQLAlchemy关系选项 选项名 说明...在视图函数定义模型类 看完了上面那么多概念说明,下面来看看如何创建数据模型以及创建数据,如下: 1.在脚本15_SQLAlchemy.py编写创建User和Role数据模型 from flask...关联查询角色所有用户: #查询rolesid1角色 role1 = Role.query.get(1) #查询该角色所有用户 role1.users 执行如下: In [25]: from db_demo

20.4K22

Flask_数据库

如果True,代表表主键 unique 如果True,代表这列不允许出现重复值 index 如果True,这列创建索引,提高查询效率 nullable 如果True,允许有空值,如果False...uselist 如果False,不使用列表,而使用标量值 order_by 指定关系记录排序方式 secondary 指定多对多关系关系名字 secondary join 在SQLAlchemy...无法自行决定时,指定多对多关系二级联结条件 数据库基本操作 Flask-SQLAlchemy,插入/修改/删除等操作,均有数据库会话管理....视图函数定义模型类 from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__)...一方定义关系,多方定义外键 __tablename__ 定义名,如果未定义,默认创建同类名名 realtionship 描述了Role和User关系,第一个参数对应参照类名(一方类名

1.3K50

flask数据操纵

SQLAlchemy是一个关系型数据库框架,它提供了高层ORM和底层原生数据库操作。flask-sqlalchemy是一个简化了SQLAlchemy操作flask扩展。...日期和时间 LargeBinary str 二进制文件 约束类型 选项 说明 primary_key 如果True,代表表主键 unique 如果True,代表这列不允许出现重复值 index...如果True,这列创建索引,提高查询效率 nullable 如果True,允许有空值,如果False,不允许有空值 default 这列定义默认值 关系类型 选项 说明 backref 在关系另一模型添加反向引用...primary join 明确指定两个模型之间使用联结条件 uselist 如果False,不使用列表,而使用标量值 order_by 指定关系记录排序方式 secondary 指定多对多记录排序方式...secondary join 在SQLAlchemy无法自行决定时,指定多对多关系二级联结 创建Flask-SQLAlchemy,插入、修改、删除操作,均由数据库会话管理。

1.3K10

Flask数据库

一 数据库设置 Web应用普遍使用是关系模型数据库,关系型数据库把所有的数据都存储在用来给应用实体建模,列数是固定,行数是可变。它使用结构化查询语言。...如果True,代表表主键 unique 如果True,代表这列不允许出现重复值 index 如果True,这列创建索引,提高查询效率 nullable 如果True,允许有空值,如果False...类属性对应数据库列。id为主键,是由Flask-SQLAlchemy管理。db.Column类构造函数第一个参数是数据库列和模型属性类型。 如下示例:定义了两个模型类,用户和角色。 ?...python _migrate.py db init 创建迁移脚本 自动创建迁移脚本有两个函数,upgrade()函数把迁移改动应用到数据库。downgrade()函数则将改动删除。...自动创建迁移脚本会根据模型定义和数据库当前状态差异,生成upgrade()和downgrade()函数内容。

3K20

Flask使用】第7篇:Flask数据库使用。0基础md文档集合(附代码,可自取)

)等等...所以在开发过程需要使用 ORM 模型将多对多关联关系使用代码描述出来。...主键(id)学生名(name)1张三2李四3王五选修课表(Course)主键(id)本文名(name)1物理2化学3生物数据关联关系(Student_Course)主键(student.id)主键(course.id...查询 course.id 值 3 所有数据查询出来有2条数据,然后将这2条数据里面的 student.id 取值并查询 Student 即可获得结果代码演练定义模型及tb_student_course...python database.py db init创建迁移脚本自动创建迁移脚本有两个函数upgrade():函数把迁移改动应用到数据库。downgrade():函数则将改动删除。...自动创建迁移脚本会根据模型定义和数据库当前状态差异,生成upgrade()和downgrade()函数内容。

18710

FLASK数据库模型

= True # 自动提交 SQLALCHEMY_TRACK_MODIFICATIONS = True # 自动sql DEBUG = True # debug模式 SQLALCHEMY_DATABASE_URI...:文章唯一标识id create_time:创建时间,detatime类型 uid:反向代理,通过关联名称可以得到 article属性 Article_Detail模型 class Article_Detail...d_content:详情文章内容,文本类型 uid:外键,关联到 article id 通过 relationship 和 ForeignKey 把文章和文章详情联系起来,在编写文章详情时候...增删改查 SQLAlchemy 之所以这么流行,在 Flask 地位如此之高,基于它是面对对象数据库编程。 所以,对于数据查询,添加等操作也是非常简单。...最后,根据 uuid 查询到文章,再由文章 id 查询到详情文章内容,渲染到详情页。 是不是及其简单,所以前期工作主要是数据库模型字段设计,还有迁移到数据库,也就是创建,让其工作。

51220

Flask数据库过滤器与查询集

下面列出了一些常用选项: primary_key:如果设置True,这列就是主键 unique:如果设置True,这列不允许出现重复值 index:如果设置True,这列创建索引,提升查询效率...多对多关系可以在任何一个类定义,backref参数会处理好关系另一侧。关联connections就是一个简单,不是模型,SQLAlchemy自动接管这个。...自引用关系 多对多关系在我们Web应用可以用来实现用户之间关注,但是在上面的文章和标签例子关联连接是两个明确实体,而在用户关注其他用户时,都在users内,只有一个实体。...这种信息只能存储在关联,但是在之前实现学生和课程之间关系关联完全是由SQLAlchemy掌控内部。...为了能在关系处理自定义数据,我们必须提升关联地位,使其变成程序可访问模型。

6.8K10

带你认识 flask 数据库

第一个是Flask-SQLAlchemy,这个插件流行SQLAlchemy包做了一层封装以便在Flask调用更方便,类似SQLAlchemy这样包叫做Object Relational Mapper...数据库模型 定义数据库中一张及其字段类,通常叫做数据模型。ORM(SQLAlchemy)会将类实例关联到数据库数据行,并翻译相关操作。...每个用户都会被数据库分配一个id值,并存储到这个字段。大多数情况下,主键都是数据库自动赋值,我只需要提供id字段作为主键即可。...第一次数据库迁移 包含映射到User数据库模型用户迁移存储库生成后,是时候创建第一次数据库迁移了。有两种方法来创建数据库迁移:手动或自动。...本处user是数据库名称,Flask-SQLAlchemy自动设置类名为小写来作为对应名称。 User类有一个新posts字段,用db.relationship初始化。

2.2K20

Flask-SQLAlchemy学习笔记

Flask-SQLAlchemy是一个Flask扩展,简化了在Flask应用中使用SQLAlchemy操作,SQLAlchemy是一个强大关系型数据库框架,支持多种数据库后台。...# 可以通过如下方法进入: # $env:FLASK_APP="sql_test.py" # flask shell # 创建,进入flask shell后,创建后,会在当前目录下生成一个数据库文件...# 使用过滤器(filter_by())来更加精确搜索数据库数据,:User.query.filter_by(role=admin_role).all(),表示返回user角色管理员数据...,查询结果:[],发现结果列表形式,自动执行查询all()方法,为了禁止自动查询执行方法,我们可以在Role关系定义中加入lazy="dynamic" # users...migrate = Migrate(app,db) # 初始化命令:该命令会在当前目录下创建migrations目录,所以迁移脚本都会存放在这里 flask db init # 自动创建迁移脚本,有时候自动创建迁移脚本是不一定能准确生成

1.6K20

使用Flask-SQLAlchemy管理数据库

默认False unique 是否设置唯一索引 默认False index 是否设置常规索引 默认False nullable 是否可以为空 默认True default 设置默认值 3、常用SQLAlchemy...关系选项 选项 说明 backref 在关系另一模型添加反向引用 primary join 明确指定两个模型之间使用联结条件 uselist 如果False,不使用列表,而使用标量值 order_by...指定关系记录排序方式 secondary 指定多对多记录排序方式 secondary join 在SQLAlchemy无法自行决定时,指定多对多关系二级联结条件 4、修改数据库名...名默认为模型名小写,可以在模型添加__tablename__属性来设置名 三、分析结构与定义模型 需求: 创建用户 1、一个用户所需字段 用户名 性别 年龄 简介 是否删除 2、创建模型代码位置...models包 3、模型、属性、之间关联 一个模型类 对应数据库一张 一个类属性 对应 一个字段 4、创建用户模型 <span class

55310

Flask-SQLAlchemy操作数据库

$ create database demo charset=utf8; 连接数据库设置 在 Flask-SQLAlchemy ,数据库使用URL指定,而且程序使用数据库必须保存到Flask...日期和时间 LargeBinary str 二进制文件 ### 常用SQLAlchemy列选项 选项名 说明 primary_key 如果True,代表表主键 unique 如果True,代表这列不允许出现重复值...index 如果True,这列创建索引,提高查询效率 nullable 如果True,允许有空值,如果False,不允许有空值 default 这列定义默认值 ### 常用SQLAlchemy...,而使用标量值 order_by 指定关系记录排序方式 secondary 指定多对多关系关系名字 secondary join 在SQLAlchemy无法自行决定时,指定多对多关系二级联结条件...() 返回一个Paginate对象,它包含指定范围内结果 创建: db.create_all() # 注意,create_all()方法执行时候,需要放在模型后面### 删除 db.drop_all

1.5K20

小白学Flask第十一天| flask-sqlalchemy数据库扩展包(一)

关系 数据库设置 学习过web开发的人也许都知道,在web开发中最常用数据库就是关系模型数据库,关系型数据库把所有的数据都存储在用来给应用实体建模,列数是固定,行数是可变。...:3306/Flask_test' #设置每次请求结束后会自动提交数据库改动 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True #查询时会显示原始...__tablename__代表着数据库名称 下面的代码就是创建来一个整型列id,以及一个字符串类列name,并且id设置为主键 # 定义列对象 id = db.Column(db.Integer...常用列选项: 选项名 说明 primary_key 如果True,代表表主键 unique 如果True,代表这列不允许出现重复值 index 如果True,这列创建索引,提高查询效率...nullable 如果True,允许有空值,如果False,不允许有空值 default 这列定义默认值 关系 关系型数据库当然得说说关系这个词,关系型数据库就是使用关系把不同行联系在一起

2.6K30

Flask使用】第6篇:Flask数据库和表单验证。0基础md文档集合(附代码,可自取)

子模块数据库Flask-SQLAlchemy 安装及连接使用数据库综合案例演练数据库迁移学习目标能够理解 ORM 工作原理以及其优缺点能够写出在 Flask 连接 MySQL 配置项格式(IP,端口...,数据库)能够使用 SQLAlchemy 定义出关系为一对多模型类能够使用 SQLAlchemy 相关函数创建及删除能够写出指定模型数据对数据库增删改代码能够写出模型数据按照条件查询功能逻辑能够写出模型数据按照指定数量分页功能逻辑能够写出模型数据按照指定条件排序功能逻辑能够按照课件步骤实现综合图书管理相关案例能够使用...,返回Noneget_or_404()返回指定主键对应行,如不存在,返回404count()返回查询结果数量paginate()返回一个Paginate对象,它包含指定范围内结果创建:db.create_all...,在Flask-SQLAlchemy,模型一般是Python类,继承自db.Model,db是SQLAlchemy实例,代表程序使用数据库。...类属性对应数据库列。id为主键,是由Flask-SQLAlchemy管理。db.Column类构造函数第一个参数是数据库列和模型属性类型。

24310

Flask对MySQL基本操作

Flask-SQLAlchemy,插入、修改、删除操作,均由数据库会话管理。 会话用 db.session 表示。...在准备把数据写入数据库前,要先将数据添加到会话然后调用 commit() 方法提交会话。 在 Flask-SQLAlchemy ,查询操作是通过 query 对象操作数据。...在视图函数定义模型类 from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__)...),则会在加载完Role对象后,就立即加载与其关联对象,这样会让总查询数量减少,但如果返回条目数量很多,就会比较慢 设置 subquery 的话,role.users 返回所有数据列表 另外,也可以设置动态方式...对象,它包含指定范围内结果 创建: db.create_all() 删除: db.drop_all() 插入一条数据 ro1 = Role(name='admin') db.session.add

1.2K10
领券