当前位置: 首页 > news >正文

许昌小学网站建设百度平台营销宝典

许昌小学网站建设,百度平台营销宝典,wordpress 首页 摘要,优化一个网站多少钱表之间的关系 数据库表之间的关系分为三种#xff1a; 一对一关系#xff08;One-to-One#xff09;#xff1a;在这种关系中#xff0c;表A的每一行都与表B的一行关联#xff0c;反之亦然。例如#xff0c;每个人都有一个唯一的社保号#xff0c;每个社保号也只属于…表之间的关系 数据库表之间的关系分为三种 一对一关系One-to-One在这种关系中表A的每一行都与表B的一行关联反之亦然。例如每个人都有一个唯一的社保号每个社保号也只属于一个人。一对多关系One-to-Many在这种关系中表A的一行可以与表B的多行关联但表B的每一行只能与表A的一行关联。例如一位母亲可以有多个孩子但每个孩子只能有一个生物学上的母亲。多对多关系Many-to-Many在这种关系中表A的一行可以与表B的多行关联表B的一行也可以与表A的多行关联。例如一个学生可以选修多门课程一门课程也可以被多个学生选修。 在数据库中这些关系通常通过使用外键Foreign Key来建立。 外键 外键Foreign Key是一种特殊类型的数据库约束主要用于创建表之间的链接或关系。 外键是在一个表中创建的它是另一个表的主键Primary Key。这个外键用来指向另一个表的主键从而建立两个表之间的关系。 外键的主要目的是维护数据的引用完整性。这意味着如果试图在一个表中插入一行而这行数据的外键值在相关表中不存在数据库将不允许这个操作。同样如果试图删除一个表中的行而这行数据的主键在其他表中作为外键存在那么数据库也不会允许这个删除操作除非先删除或更改引用这个主键的所有外键。 例如假设有两个表一个是学生表一个是课程表。每个学生可以注册多个课程所以在课程表中可能会有一个列叫做 student_id这个列是学生表的外键。这样就可以通过学生的 ID 查询他们注册的所有课程同时也保证了每个课程都有一个注册的学生。 使用 SQLAlchemy 创建外键的步骤 定义表格首先需要定义数据库表格。每个表格对应一个 SQLAlchemy 类类中的每个属性对应表格中的一个列。设置外键在定义表格的过程中可以使用 ForeignKey 函数来设置外键。ForeignKey 函数的参数是想要链接的表格的列名。例如如果有一个 Order 表想让它链接到 Customer 表的 id 列可以这样写 customer_id Column(Integer, ForeignKey(customer.id))。创建关系在设置了外键之后还需要在 SQLAlchemy 类中使用 relationship 函数来创建两个表格之间的关系。例如可以在 Customer 类中添加如下的代码 orders relationship(Order, backrefcustomer)。 这段代码表示一个客户可以有多个订单每个订单都有一个关联的客户。创建数据库最后需要使用 SQLAlchemy 的 create_all 函数来创建数据库。这个函数会根据定义的 SQLAlchemy 类来创建表格并设置好所有的外键和关系。 实例 实现学生 Student 与 Lesson 之间的关系表的建立。 python 代码 Base declarative_base()# 定义 Student 表 class Student(Base):__tablename__ studentid Column(Integer, primary_keyTrue)name Column(String(50), nullableFalse)age Column(Integer)def __repr__(self):return Student(name%s, age%s) % (self.name, self.age)# 定义 Lesson 表 class Lesson(Base):__tablename__ lessonid Column(Integer, primary_keyTrue)name Column(String(50), nullableFalse)description Column(String(100), nullableFalse)student_id Column(Integer, ForeignKey(student.id))def __repr__(self):return Lesson(name%s, description%s) % (self.name, self.description)Base.metadata.create_all(engine)sql语句代码 create table student (id int auto_incrementprimary key,name varchar(50) not null,age int null );create table lesson (id int auto_incrementprimary key,name varchar(50) not null,description varchar(100) not null,student_id int null,constraint lesson_ibfk_1foreign key (student_id) references student (id) );create index student_idon lesson (student_id);表关系图 测试插入数据 # 测试插入数据# Student 数据 stu1 Student(namezmz, age10) stu2 Student(nameypb, age18) stu3 Student(namegll, age20)session.add_all([stu1, stu2, stu3]) session.commit()# Lesson 数据 l1 Lesson(namejava, descriptionthis is java, student_idstu1.id) l2 Lesson(namejava, descriptionthis is java, student_idstu2.id) l3 Lesson(namepython, descriptionthis is python, student_idstu1.id) session.add_all([l1, l2, l3]) session.commit()数据库 student 表 数据库 lesson 表 外键约束分类 RESTRICT这是默认选项。当尝试删除父表中的数据时如果子表中存在与之关联的数据那么这个删除操作将会被阻止。也就是说只有当没有任何子表行与父表行关联时才能删除父表中的行。NO ACTION在 MySQL 中这个选项的行为与 RESTRICT 选项相同。也就是说如果子表中存在与父表行关联的行那么尝试删除父表中的行将会被阻止。CASCADE这个选项表示级联删除。当你删除父表中的行时所有在子表中与之关联的行也会被自动删除。这种选项需要谨慎使用因为它可能会导致大量的数据被删除。SET NULL当父表中的行被删除时这个选项会将子表中所有与之关联的行的外键列设置为 NULL。这意味着子表中的这些行不再与父表中的任何行关联。注意为了使用这个选项子表的外键列必须允许 NULL 值。 修改 lesson 表 # 定义 Lesson 表 class Lesson(Base):__tablename__ lessonid Column(Integer, primary_keyTrue)name Column(String(50), nullableFalse)description Column(String(100), nullableFalse)student_id Column(Integer, ForeignKey(student.id, ondeleteCASCADE), nullableFalse)def __repr__(self):return Lesson(name%s, description%s) % (self.name, self.description)注意事项 问题 加入在添加数据时我们先提交了 student 中的数据,之后在提交了 lesson 中的数据会造成 lesson 中 student_id 为空。 分析 在 SQLAlchemy 中当使用 session.add() 方法时数据并不会立即被写入数据库而是被添加到了会话的事务队列中。只有当调用 session.commit() 方法时才会将这些变更写入数据库。在这之前新创建的 Student 对象的 id 属性是 None因为它们还没有被分配数据库中的 id。 在代码中首先创建了几个 Student 对象并使用 session.add_all() 添加到会话中但是在添加 Lesson 对象之前没有调用 session.commit()。因此当试图访问 stu1.id 时它其实是 None这就是为什么在插入 Lesson 数据时会出现错误。 为了解决这个问题需要在添加 Lesson 对象之前先提交 Student 对象。
http://www.pierceye.com/news/15087/

相关文章:

  • 网站建设销售应答技巧推广资源整合平台
  • 易思espcms企业网站管理系统最新国际消息
  • 金顺广州外贸网站建设外包app开发价格表
  • 如何给网站写文章重庆潼南网站建设哪家好
  • 北京建设行政主管部门官方网站江苏省工程建设信息网
  • 宿迁网站建设托管wordpress 免费cdn
  • 淄博免费网站建设哪家好网站开发接口文档
  • 电影网站开发开题报告房地产 网站 设计制作
  • 签证网站建设微信公众平台注册官网
  • 和平网站建设优化seo仿wordpress大学模板下载
  • 门户网站手机版公司网站cms
  • 江苏盐城网站开发佛山新网站制作代理商
  • 网站建设未来wordpress安装主题之后首页不变
  • 专业做网站公司 前景wordpress表格显示图片
  • 免费做网站方案做编程的 网站有哪些
  • 做网站公司 备案如何设计一个网页并举例说明
  • 涿州网站制作江西赣州市
  • 境外网站临淄百度信息网
  • 全国广告公司网站建设用tomcat做网站目录
  • 产品做网站推广建立互联网公司网站
  • 网站建设怎么报印花税资阳网站网站建设
  • 给老外做兼职的网站赶集网官网首页
  • 怎么上网站后台做网站怎么推广收益大
  • 网站 后台 安装襄樊门户网站建设
  • 网站策划方法二手物品交换网站建设
  • 重庆做网站建设的公司网站用的是什么字体
  • 做英语陪同翻译兼职的网站阿里云服务器学生免费领取
  • 验证码平台网站开发做移动网站多少钱
  • 网站推广的渠道有哪些辽源网站建设设计
  • 网站关键词提取工具做外贸网站公司哪家好