首页
学习
活动
专区
工具
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.4K20

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-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 关系字段和关联查询 在上面创建的两张表中,已经设置了关系字段

    5.1K31

    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...关联查询角色的所有用户: #查询roles表id为1的角色 role1 = Role.query.get(1) #查询该角色的所有用户 role1.users 执行如下: In [25]: from

    5.4K20

    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()函数的内容。

    3.4K20

    盘点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.5K60

    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...关联查询角色的所有用户: #查询roles表id为1的角色 role1 = Role.query.get(1) #查询该角色的所有用户 role1.users 执行如下: In [25]: from db_demo

    21.3K22

    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数据库模型

    = 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 查询到详情文章内容,渲染到详情页。 是不是及其简单,所以前期的工作主要是数据库模型字段的设计,还有迁移到数据库中,也就是创建表,让其工作。

    54320

    Flask数据库过滤器与查询集

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

    7K10

    带你认识 flask 中的数据库

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

    2.3K20

    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.7K20

    使用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

    59810

    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中对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.3K10

    Python的flask:models.py来创建mysql数据库

    Python 3.6 用到的包 flask下有一个叫flask_sqlalchemy的数据库框架,没有安装的可以使用下面的来安装 $ pip install -i https://pypi.douban.com...它存储在你必须创建的 SQLAlchemy 实例上。...进阶 有很多的表,各个一些表之间有外键相关联的情况 如图,相对很复杂的ER图 ?...,上面代码可以看出,比如user表与userlog表(第一个与第二个类),user表中的userlogs表头是要userlog这个表建立联系,那么第一个参数就是对应的类的名称,backref后面跟的是本表的名字...接下来就是userlog表的类Userlog中的user_id的外键是user表中的id,外键通过db.Foreignkey()来建立外键,参数就是对应的表.表头,比如上面参数的user.id 运行创建

    98160

    Flask框架与SQLAlchemy框架手牵手,一起走

    这里创建了两个数据表,一个是用户表,一个是文章表,本系列文章要实现的是创建一个博客系统。 0....初始化数据库 数据库的基本配置弄好之后,接下来就是初始化数据库,创建应用,文件地址 flaskr/__init__.py from flask import Flask from flask_sqlalchemy...创建数据表对应的model 我们知道SQLAlchemy是一个ORM框架,就是将数据表与对象进行对应的。所以,针对前面的user表和post表,我们分别建立两个model。...这里只会列举一些基本的查询方法,详细的查询方法,请参考,两分钟了解Python之SQLAlchemy框架的使用,下面所有的方法都是在 flaskr/biz/user_service.py文件中。...设置启动类 前面的步骤弄好之后,就到了我们的最后一步了,创建一个启动类,用于运行我们的app。文件地址是:/flaskr/manage.py。这里将项目的端口号设置为 5001。

    1.4K20
    领券