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

外键的Flask SQLAlchemy自定义字段名?

在Flask SQLAlchemy中,可以使用db.ForeignKey来定义外键字段。默认情况下,外键字段的名称是根据关联模型的表名和主键字段名生成的。但是,有时候我们可能希望自定义外键字段的名称。

要自定义外键字段名,可以在定义模型类时,将db.ForeignKey作为参数传递给字段,并指定name参数来设置外键字段的名称。例如:

代码语言:txt
复制
class User(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id', name='fk_user_role'))

class Role(db.Model):
    __tablename__ = 'roles'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))

在上面的例子中,User模型类定义了一个名为role_id的外键字段,它引用了Role模型类的id字段作为外键。通过设置name='fk_user_role',我们自定义了外键字段的名称为fk_user_role

这样,当使用Flask SQLAlchemy进行数据库迁移或执行查询操作时,会使用自定义的外键字段名。

推荐的腾讯云相关产品:云数据库 TencentDB、云服务器 CVM、云原生容器服务 TKE

  • 云数据库 TencentDB:提供高性能、可扩展的云数据库服务,支持多种数据库引擎,适用于各种应用场景。
  • 云服务器 CVM:提供弹性、安全、稳定的云服务器实例,可根据业务需求灵活调整配置。
  • 云原生容器服务 TKE:基于Kubernetes的容器管理服务,提供高可用、弹性伸缩的容器集群,简化容器化应用的部署和管理。

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求和情况进行。

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

相关·内容

SQLAlchemy使用

orm可以将数据库存储数据封装成对象,同时,如果封装好的话,所有的数据库操作都可以封装到对象中。这样代码在组织结构上会非常清晰,并且相对与使用sql语句在sql注入方面会极具降低。...SQLAlchemy映射关系有四种,分别是一对多,多对一,一对一,多对多 实现这种映射关系只需要(ForeignKey),和relationship 一对多: from sqlalchemy.ext.declarative...import declarative_base from sqlalchemy import Column, Integer, CHAR from sqlalchemy import ForeignKey...from sqlalchemy.orm import relationship, backref Base = declarative_base() class Parent(Base):...import declarative_base from sqlalchemy import Column, Integer, CHAR from sqlalchemy import ForeignKey

2.3K50

Flask中ORM框架之SQLAlchemy插件入门到弃坑

扩展安装: pip install flask-sqlalchemy Step 2.Flask-SQLAlchemy 扩展配置: 描述: 需要使用Flask app = Flask(__name...答: 官方文档使用关系 relationship 进行 反向引用即级联查询,注意点他不是映射在数据库之中他实际上是Django隐型属性; # 基础语法 反向引用名称 = db.relationship...ForeignKey 基础实例: 1.反向引用模型构建 2.使用关系 relationship 进行反向引用即级联查询; # Day3\App\models.py # 例如以下数据库模型声明...# 使用插入数据 @d3.route('/add_fdog/') def add_fdog(): fdog = FDog() # 插入数据根据字段中值排序规则为倒序 fdog.fid...中SQLAlchemy设置数据模型(ForeignKey)时候无法启动项目; 错误信息: File "D:\Program Files (x86)\Python37-32\lib\site-packages

3.2K10

设置

关键词: | 索引 | InNoDB和MyISAM | 引用 | Mysql 设置目的:保证数据一致性!...一、使用条件: ① 两个表必须是InnoDB表,MyISAM表暂时不支持 #查看表类型 SHOW TABLE STATUS #查询结果Engine字段下,一般默认InnoDB类型 ②...列必须建立了索引,MySQL 4.1.2以后版本在建立时会自动创建索引,但如果在较早版本则需要显式建立; #创建索引 CREATE INDEX 字段1 ON test(字段1) #对...test2创建test索引,在test2下执行,test2为从,test为主 这一步也是博主自己刚开始研究是碰到最大坑, 引用一直选不了对应字段,可能是你没有设置索引 ③ 关系两个表列必须是数据类型相似...对父表(表1)含义: 在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行候选时,父表行为取决于:在定义子表时指定on update/on delete子句

2.7K30

mysql

在MySQL 3.23.44版本后,InnoDB引擎类型表支持了约束。...使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持(据说以后版本有可能支持,但至少目前不支持); 2.列必须建立了索引,MySQL 4.1.2以后版本在建立时会自动创建索引...,但如果在较早版本则需要显示建立; 3.关系两个表列必须是数据类型相似,也就是可以相互转换类型列,比如int和tinyint可以,而int和char则不可以; 好处:可以使得两张表关联...,保证数据一致性和实现一些级联操作; 定义语法: [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)...ON DELETE、ON UPDATE表示事件触发限制,可设参数: RESTRICT(限制外表中改动) CASCADE(跟随改动) SET NULL(设空值) SET DEFAULT(设默认值

5.4K70

Python Web - Flask笔记5

可以使用default设置初始默认值 name:指定ORM模型中某个属性映射到表中字段名。如果不指定,那么会使用这个属性名字来作为字段名。如果指定了,就会使用指定这个值作为参数。...注: 重写类__repr__函数可以自定义返回 def __repr__(self): return 'Title: %s' % self.title 返回: Title: xxx 36. filter...和四种约束 使用SQLAlchemy创建非常简单。在从表中增加一个字段,指定这个字段是哪个表哪个字段就可以了。从表中外字段,必须和父表主键字段类型保持一致。...nullable=False) content = Column(Text,nullable=False) uid = Column(Integer,ForeignKey("user.id")) 约束有以下几项...注意:字段属性不能有nullable=False id = Column(Integer, ForeignKey("user.id", ondelete="RESTRICT")) 注:如果要使用,则数据库引擎必须为

1K10

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

前言 在我们做web开发时候,经常需要用到与数据库交互,因为我们数据通常都是保存在数据库中,如果有人需要访问,就必须与数据库访问,所以今天我们介绍一个Flask中与数据库交互插件---Flask-Sqlalchemy...列名 type_ 类型 *args 列表参数 Constraint(约束), ForeignKey(), ColumnDefault(默认), Sequenceobjects...__name__,self.name) 2).一对多 我们需要建立一个主表和一个子表,分别命名为“father”和‘son’,然后需要建立和反射来互相引用建立一种关系,我们来看看: class father...db.Column(db.Integer,nullable=False) f_id=db.Column(db.Integer,db.ForeignKey('Father.id')) # 建立关联...db.Column(db.Integer,nullable=False) f_id=db.Column(db.Integer,db.ForeignKey('Father.id')) # 建立关联

2.4K60

SQLAlchemy建立数据库模型之间关系

常见关系: 一对多关系 多对一关系 多对多关系 一对一关系 一对多关系(一个作者,多篇文章) ## 一对多关系,单作者-多文章,不可少 ## (ForeignKey)总在多那边定义,关系(relationship...:"表名.字段名" ## 模型类对应表名由Flask-SQLAlchemy生成,默认为类名称小写形式,多个单词通过下划线分隔 author_id = db.Column(db.Integer...## 多对一关系中,和关系属性都在多一侧定义 ## 这里关系属性是标量关系属性(返回单一数据) class Citizen(db.Model): id = db.Column(db.Integer...关联表不存储数据,只用来存储关系两侧模型对应关系 定义关系两侧关系函数时,需要添加一个secondary参数,值设为关联表名称 关联表由使用db.Table类定义,传入第一个参数为关联表名称...相关 http://www.sqlalchemy.org/ https://github.com/sqlalchemy/sqlalchemy https://github.com/mitsuhiko/flask-sqlalchemy

1.6K20

小记 - Flask基础

CSRF防护会根据设置密钥生成加密令牌 需要先安装此插件 pip install Flask-WTF 基本示例 先自定义一个表单类 继承自基类FlaskForm 导入所需表单字段 from flask_wtf...插件-数据库-SQLAlchemy SQLAlchemy是一个关系型数据库框架,它提供了高层ORM和底层原生数据库操作,Flask-sqlalchemy是一个简化了SQLAlchemy操作扩展...在Flask-SQLAlchemy中,数据库使用URL指定,而且程序使用数据库必须保存到Flask配置对象SQLALCHEMY_DATABASE_URI中 数据库类型://数据库账号:密码@地址...定义数据模型 Roles表 role_id(主键) 1 管理员 2 普通用户 Users表 user_id user_name role_id() 1 1号管理 1 2 2号管理 1 3...用户A 2 实现数据模型 通过class实现,继承自db.Model 定义表名:__tablename__ 定义字段:db.Column(字段类型, 列选项) 指定:db.ForeignKey(

2.8K10

Flask-SQLAlchemy 对数据库过滤查询

使用 Flask-SQLAlchemy 从数据库中查询数据,可以指定查询条件。数据库中数据很多,用户需要只是某一条数据或满足某个条件数据。...在 Flask-SQLAlchemy 中,指定查询条件是通过数据对象 query 对象来实现,query 对象中实现了很多常用过滤方法,可以方便地实现过滤查询。 一、准备数据库和数据表 1....from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config[...这些数据用于后面使用 Flask-SQLAlchemy 进行过滤查询素材。...三、使用 Flask-SQLAlchemy 进行过滤查询 数据添加完成,注释掉添加数据代码,(表中有唯一字段,重复添加会报错),然后开始查询数据。 1.

4.9K31

Innodb引起死锁

可以看出一个有和一个没有区别。...InnoDB自增长锁和锁以便于我们理解本文中死锁问题。...我们用这一张图分析完为什么死锁,在第5步和第6步时候发生了相互等待,Innodb在TB中检查到了死锁,反过来思考,加入数据库删除了,在第2步我第3步做insert db_payment操作时候都没有对...总结 使用MySQL开发过程中需要对锁知识理解清楚,不然在业务代码中就有可能产生死锁,尤其是要知道Innodb使用时候锁机制,才能更好避免生产环境发生死锁,造成严重bug。...参考 Mysql中那些锁机制之InnoDB MySQL自增长与锁进一步认识 MySQL InnoDB自增长锁和锁 快速了解innodb锁概念 MySQL 共享锁、排他锁、意向锁解析-对意向锁解释清楚

2K40
领券