SQLAlchemy外键约束

十、SQLAlchemy的外键约束 1.写好配置文件 今天来和大家一块学习下SQLAlchemy的外键约束。我们先添加一个config.py用来写连接MySQL的参数。代码如下。 DIALECT = 'mysql' # 要用的什么数据库 DRIVER = 'pymysql' # 连接数据库驱动 USERNAME = 'root' # 用户名 PASSWORD = 'root' # 密码 HOST = 'localhos... 阅读详情

在创建一个模型的时候,一旦生成一个表,就无法在模型中添加属性,此时的解决办法是,先在数据库中删除这张表drop tables article;。然后重新运行。

1.外键:

class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    username = db.Column(db.String(100),nullable=False)

class Article(db.Model):
    __tablename__ = 'article'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(100), nullable=False)
    author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    content = db.Column(db.Text, nullable=False)

    author = db.relationship('User',backref=db.backref('articles'))#正向与反向引用

2.author = db.relationship('User',backref=db.backref('articles'))解释:
*给Article这个模型添加一个author属性,可以访问这篇文章的作者的数据,像访问普通模型一样。
*backref是定义反向引用,可以通过User.articles访问这个模型所写的所有文章。

db1.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config
import pymysql
pymysql.install_as_MySQLdb()

app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)

# class Article(db.Model):
#     __tablename__ = 'article'
#     id = db.Column(db.Integer,primary_key=True,autoincrement=True)
#     title = db.Column(db.String(100),nullable=False)
#     content = db.Column(db.Text,nullable=False)
#
# db.create_all()

class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    username = db.Column(db.String(100),nullable=False)

class Article(db.Model):
    __tablename__ = 'article'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(100), nullable=False)
    author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    content = db.Column(db.Text, nullable=False)

    author = db.relationship('User',backref=db.backref('articles'))#正向与反向引用

db.create_all()

@app.route('/')
def hello_world():
    #添加一个用户
    # user1 = User(username='xww')
    # db.session.add(user1)
    # db.session.commit()

    # 添加一个文章
    # article = Article(title='aaa',content='bbb',author_id=1)
    # db.session.add(article)
    # db.session.commit()

    # 找文章标题为aaa的作者
    # article = Article.query.filter(Article.title=='aaa').first()
    # author_id = article.author_id
    # user = User.query.filter(User.id==author_id).first()
    # print(user.username)

    # 正向与反向引用
    #查找作者为xww的所有文章
    # article.author
    # author = User.query.filter(User.name == 'xww').first()
    # author.articles

    # article = Article(title='aaa', content='bbb')
    # article.author = User.query.filter(User.id==1).first()
    # db.session.add(article)
    # db.session.commit()

    # 找文章标题为aaa的作者
    # article = Article.query.filter(Article.title == 'aaa').first()
    # print(article.author.username)

    # 查找作者为xww的所有文章
    # article = Article(title='111',content='222',author_id=1)
    # db.session.add(article)
    # db.session.commit()
    user = User.query.filter(User.username == 'xww').first()
    result = user.articles
    for article in result:
        print('-'*10)
        print(article.title)

    return 'Hello World!'

if __name__ == '__main__':
    app.run(debug=True)
Creo二次开发环境配置与DLL项目实战指南(Creo8.0+VS2019) 本文详细介绍了Creo8.0与VS2019环境下的二次开发配置与DLL项目实战指南,涵盖环境准备、版本匹配、DLL项目创建、核心代码编写、部署调试及常见报错处理。重点解析了Creo二次开发中的关键配置和优化技巧,帮助开发者高效解决实际问题。 阅读详情

相关推荐

Qt5.12.12安卓开发环境搭建:Windows下避开SDK版本坑的保姆级教程

本文提供Qt5.12.12在Windows下搭建Android开发环境的详细教程,重点解决SDK版本兼容性问题,特别是cmdline-tools与JDK8的匹配陷阱。通过精准选择组件版本、手动配置路径和修复常见错误,帮助开发者高效完成环境配置,适用于Qt跨平台移动开发。

weixin_33737774的博客 542

在SQLAlchemy中使用数据库外键约束

1.SQLAlchemy外键及其约束 外键可以使得几张表格之间联系更加紧密 from sqlalchemy import create_engine, and_, or_ from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, DECIMAL, Boolean, Enum, DATE, DATETIME, Time, Text, ForeignKey f

duke-coder的博客 1075

SARScape实战:集成GACOS数据优化InSAR大气校正全流程

本文详细介绍了如何在SARScape软件中集成GACOS数据,以优化InSAR大气校正的全流程。通过实战步骤,从GACOS数据申请、下载、导入,到在单景干涉图和SBAS-InSAR流程中应用,有效剥离大气相位延迟,显著提升形变监测结果的精度与可靠性,实现从“雾里看花”到“拨云见日”的转变。

weixin_28419039的博客 398

SQLAlchemy —— 外键及其约束

Flask 学习笔记 一、外键        

白菜执笔人的博客 1143

手把手教你用Python+GDAL处理0.5米吉林一号卫星影像(附代码)

本文详细介绍了如何使用Python和GDAL处理吉林一号0.5米高分辨率卫星影像,包括环境配置、数据预处理、分辨率融合、植被指数计算及地物分类等关键步骤。通过实战代码示例,帮助开发者高效处理大尺寸遥感数据,解决资源崩溃和算法选择问题,提升遥感影像分析能力。

weixin_30892037的博客 126

STM32 CAN发送丢包?3个邮箱轮询法实测有效(附代码)

本文深入分析了STM32 CAN总线发送丢包的根本原因,指出其内置CAN控制器的三个发送邮箱是硬件瓶颈。针对高负载场景,提供了实测有效的优化方案,重点介绍了非阻塞的邮箱状态轮询法,该方法通过主动轮询三个邮箱的空闲状态,充分利用硬件资源,显著提升发送稳定性并避免任务阻塞。文中附有可直接使用的示例代码。

weixin_29189381的博客 195

flask 中SQLALchemy实现外键及其四种约束讲解(重点)

表关系: 表之间的关系存在三种:一对一、一对多、多对多。 而SQLAlchemy中的ORM也可以模拟这三种关系。 外键: 使用SQLAlchemy创建外键非常简单。在从表中增加一个字段,指定这个字段外键的是哪个表的哪个字段就可以了。从表中外键的字段,必须和主表的主键字段类型保持一致 # 主表 / 从表 # user/news class User(Base): __tablename__ = 'user' id = Column(Integer,primary_key=True,

qq_53582111的博客 2630

Dify 部署与使用

本文介绍了Dify社区版的快速部署指南,涵盖系统架构、环境配置和初始化流程。Dify采用微服务架构,通过Docker Compose一键部署8个核心容器,包括前端、后端、数据库等组件。部署过程包括克隆代码、配置环境变量和启动服务,首次启动需3-10分钟下载镜像。文章详细讲解了.env文件的配置要点,包括服务地址、数据库连接和向量存储设置,并提供了生产环境安全加固建议。最后通过访问/install页面完成管理员账号初始化,即可开始使用Dify构建AI应用。

海兰 591

SQLAlchemy-外键

1.0 外键约束 1.1介绍 在Mysql中,外键可以让表之间的关系更亲密,而sqlaichemy也是支持外键的, 它通过ForeignKey类 来实现的,并可以指定表的外键约束。 class Base_key1(Bill): __tablename__ = 'class_key1' #创建数据库表 id = Column(Integer, primary_key=True, autoincrement=True) name = Column(String(50)) de

baidu_39394442的博客 1551

Wi-Fi QoS中AIFSN/CWmin/CWmax/TxOP参数是怎样计算的?

802.11e/WMM的EDCA机制通过AIFS、CWmin/CWmax和TxOP三组参数实现业务优先级控制。AIFS决定最短等待时间(AIFS=SIFS+AIFSN×SlotTime),CWmin/CWmax定义退避范围(2^ECW-1),TxOP设置最大占用时长(32µs单位)。默认配置中,语音业务(VO)优先级最高,其AIFSN最小(2)、CW范围最小(3-7)、TxOP适中(1.504ms);视频(VI)次之;普通数据(BE)和后台(BK)优先级最低。调优需根据网络特性调整参数:VoIP可降低AIF

1042484520@qq.com(邮箱) 1744

【以太网硬件一】802.3xx标准怎么这么多?它们有什么关系?

IEEE 802.3标准发展历史简介

highman110的博客 5017

SQL编程:外键约束

外键(foreign key) 一个表中的foreign key指向另一个表中的unique key(唯一约束的键) 对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表,外键所在的表就是从表(子表)。 外键约束 foreign key约束用于预防破坏表之间连接的行为,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。【主要目的是确保表的数据的完整性,唯一性】 主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。一个表可以有一个或者多个外键,外键可以为空值,若不为

信仰.的博客 5157

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

sqlalchemy 外键创建及四种外键约束

       前面讲了那么多关于sqlalchemy相关知识,今天就为大家讲讲sqlalchemy外键创建及其四种外键约束。from sqlalchemy import create_engine,Column,Integer,String,Text,ForeignKeyfrom sqlalchemy.ext.declarative import declarative_basefrom sqla...

阿汤哥 8306

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

03SQLALchemy外键约束

一,配置 1,SQLALchemy的配置单独使用config.py文件2,满足如下要求: #dialect+driver://username:password@host:port/database 具体说明如下: # dialect:是数据库的实现,比如MySql,SQLlite,且转换为小写 # driver:对应的驱动,比如MySql的驱动是MySqldb # use...

weixin_30362801的博客 221

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

违反了 primary key 约束_Day052 SQLALchemy实现外键及其四种约束讲解

表关系:表之间的关系存在三种:一对一、一对多、多对多。而SQLAlchemy中的ORM也可以模拟这三种关系。外键:使用SQLAlchemy创建外键非常简单。在从表中增加一个字段,指定这个字段外键的是哪个表的哪个字段就可以了。从表中外键的字段,必须和主表的主键字段类型保持一致。示例代码如下:# 主表 / 从表 外键约束有以下几项: 1. RESTRICT:若子表中有父表对应的关联数据,删除父表对应数...

weixin_39895995的博客 447

Day052 SQLALchemy实现外键及其四种约束讲解

表关系: 表之间的关系存在三种:一对一、一对多、多对多。 而SQLAlchemy中的ORM也可以模拟这三种关系。 外键: 使用SQLAlchemy创建外键非常简单。在从表中增加一个字段,指定这个字段外键的是哪个表的哪个字段就可以了。从表中外键的字段,必须和主表的主键字段...

Melody_92的博客 512

flask框架学习笔记——SQLAlchemy外键约束

from flask import Flask import config from flask_sqlalchemy import SQLAlchemy app = Flask (name) app.config.from_object(config) db=SQLAlchemy(app) class User(db.Model): tablename=‘user’ id=db.Column(d...

fnms88的博客 654

SQLAlchemy创建,crud,聚合函数,过滤条件,外键约束以及表间的多种关系

SQLAlchemy创建,crud,聚合函数,过滤条件,外键约束,relationship 1.sqlalchemy的创建 先创建引擎create_engine,再创建基类Base: from sqlalchemy.ext.declarative import declarative_base,Column from sqlalchemy import create_engine DB_URI ...

某人的博客 9292

SQLAlchemy2.0中解决SQLite3外键约束无效问题

Python+SQLAlchemy2.0+QLite3 编程S“外键约束无效” 怎么解?

garyshenqj的博客 1103

Flask-SQLAlchemy外键约束

1.外键语法: class User(db.Model): __tablename__='user' id=db.Column(db.Integer,primary_key=True,autoincrement=True) username=db.Column(db.String(100),nullable=False) class Article(db.Model): ...

qq_42991834的博客 838

Sqlalchemy - 外键约束(relationship)

student2school = relationship("类名",backref = "student2school") backref: back reference(反向调用) 建表: from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,S...

⚡ 2701

flask SQLALchemy外键及约束

from flask import Flask,session from flask_sqlalchemy import SQLAlchemy import config app = Flask(__name__) app.config.from_object(config) db = SQLAlchemy(app) class User(db.Model): ...

weixin_30588827的博客 178

SQLAlchemy外键约束:级联操作与数据完整性的终极指南

SQLAlchemy作为Python最强大的数据库工具包,其外键约束和级联操作功能是确保数据完整性的核心机制。通过合理配置外键和级联规则,开发者可以轻松维护数据库表之间的关联关系,避免数据不一致的问题。本文将深入解析SQLAlchemy外键约束的配置方法和级联操作的实战技巧。 ## 🔗 什么是SQLAlchemy外键约束? 外键约束是关系型数据库中维护表间关联完整性的重要机制。在SQLAlc

gitblog_00333的博客 483

restrict 外键约束_Day052 SQLALchemy实现外键及其四种约束讲解

表关系:表之间的关系存在三种:一对一、一对多、多对多。而SQLAlchemy中的ORM也可以模拟这三种关系。外键:使用SQLAlchemy创建外键非常简单。在从表中增加一个字段,指定这个字段外键的是哪个表的哪个字段就可以了。从表中外键的字段,必须和主表的主键字段类型保持一致。示例代码如下:# 主表 / 从表 # user/news class User(Base): __tablename...

weixin_39851457的博客 346

使用SQLAlchemy创建外键

使用SQLAlchemy创建外键非常简单。在从表中增加一个字段,指定这个字段外键的是哪个表的哪个字段就可以了。从表中外键的字段,必须和父表的主键字段类型保持一致。 示例代码如下: class User(Base): __tablename__ = 'user' id = Column(Integer,primary_key=True,autoincrement=True) username = Column(String(50),nullable=False) ​ class...

qq_44713013的博客 1214
上一篇: Flask-SQLAlchemy数据的增、删、改、查
下一篇: 多对多关系
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值