sqlalchemy 外键
建表
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base() from sqlalchemy import Column,INT,VARCHAR,ForeignKey
from sqlalchemy.orm import relationship class student(Base):
__tablename__='student'
id=Column(INT,primary_key=True)
name=Column(VARCHAR(64))
school_id=Column(INT,ForeignKey('school.id'))
#stu2sch=relationship('school',backref='sch2stu') #本条在采用relationship插入数据是写入 class school(Base):
__tablename__='school'
id=Column(INT,primary_key=True)
name = Column(VARCHAR(64)) from sqlalchemy import create_engine engine=create_engine('mysql+pymysql://root:941015@192.168.50.67:3306/sqlarchm?charset=utf8') Base.metadata.create_all(engine)
# Base.metadata.drop_all(engine)
插入数据:
from sqlalchemy.orm import sessionmaker
from create_table_foreignkey import engine,school,student Session=sessionmaker(engine)
db_session=Session() #笨方法
# sch_obj=school(name='dongnanya')
# db_session.add(sch_obj)
# db_session.commit()
#
# sch_obj=db_session.query(school).filter(school.name=='dongnanya').first()
# student_obj=student(name='chaochao',school_id=sch_obj.id)
# db_session.add(student_obj)
# db_session.commit()
# db_session.close() #利用relationship -正向 # stu_obj = student(name='LUCIFER',stu2sch=school(name='dongbeiya'))
#
# db_session.add(stu_obj)
# db_session.commit()
# db_session.close() #利用relationship -反向 sch_obj=school(name='xxy')
sch_obj.sch2stu=[student(name='beibei'),student(name='huahua')]
db_session.add(sch_obj) db_session.commit()
查:
from sqlalchemy.orm import sessionmaker
from create_table_foreignkey import engine,student,school Session=sessionmaker(engine)
db_session=Session() #查询 笨
# sch_obj=db_session.query(school).filter(school.name=='dongbeiya').first()
#
# stu_obj=db_session.query(student).filter(student.school_id==sch_obj.id).first()
#
# print(stu_obj.name,sch_obj.name) #relationship 正向 # stu_obj=db_session.query(student).filter(student.name=='LUCIFER').first()
# print(stu_obj.stu2sch.name,stu_obj.name) #relationship 反向
sch_obj=db_session.query(school).all()
for row in sch_obj:
for stu in row.sch2stu:
print(row.name,stu.name)
删除和更新 没有简单操作
sqlalchemy 外键的更多相关文章
- sqlalchemy外键和relationship查询
前面的文章中讲解了外键的基础知识和操作,上一篇文章讲解了sqlalchemy的基本操作.前面两篇文章都是作为铺垫,为下面的文章打好基础.记得初一时第一次期中考试时考的不好,老爸安慰我说:“学习是一个循 ...
- 吃货眼中的sqlalchemy外键和连表查询
前言 使用数据库一个高效的操作是连表查询,一条查询语句能够查询到多个表的数据.在sqlalchem架构下的数据库连表查询更是十分方便.那么如何连表查询?以及数据库外键对连表查询有没有帮助呢?本篇文章就 ...
- sqlalchemy外键的一些东西
sqlalchemy中让MySQL支持中文字符 engine = create_engine("mysql+pymysql://root:mysql8@localhost/mysqltest ...
- flask SQLALchemy外键及约束
from flask import Flask,session from flask_sqlalchemy import SQLAlchemy import config app = Flask(__ ...
- pythonのsqlalchemy外键关联查询
#!/usr/bin/env python import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.dec ...
- sqlalchemy外键关联
一.创建两张表,并关联外键 导入ForenginKey模块 # -*- coding: UTF-8 -*- from sqlalchemy import create_engine from sqla ...
- 【Flask】Sqlalchemy 外键
### 外键:使用SQLAlchemy创建外键非常简单.在从表中增加一个字段,指定这个字段外键的是哪个表的哪个字段就可以了.从表中外键的字段,必须和父表的主键字段类型保持一致.示例代码如下: from ...
- SQLAlchemy外键的使用
orm可以将数据库存储的数据封装成对象,同时,如果封装的好的话,所有的数据库操作都可以封装到对象中.这样的代码在组织结构上会非常的清晰,并且相对与使用sql语句在sql注入方面会极具降低. SQLAl ...
- Python自动化之sqlalchemy复合外键
复合外键用法 metadata = MetaData(engine) classedu = Table('classedu', metadata, # Column('qq', BigInteger, ...
随机推荐
- SpringBoot基础系列一
SpringBoot基础知识概览 特性 核心理念:约定优于配置 特点: 1. 开箱即用,根据项目依赖自动配置 2. 功能强大的服务体系,如嵌入式服务.安全 3. 绝无代码生成,不用写.xml配置,用注 ...
- 理解滑动平均(exponential moving average)
1. 用滑动平均估计局部均值 滑动平均(exponential moving average),或者叫做指数加权平均(exponentially weighted moving average),可以 ...
- VS2017 无法连接到Web服务器“IIS Express”终极解决方案
今天日了gou了,一大早打开VS2017的时候出现无法连接到Web服务器"IIS Express"的错误,然后必应了一下,再谷歌了一下找到的解决方法也都千篇一律,奈何都没能解决,最 ...
- Abp中使用可视化的日志面板
Abp中使用可视化的日志面板 如果你还不了解LogDashboard请看这里. ABP的相关知识不做介绍如果有需要请阅读ABP官方文档 ABP是Net下非常优秀的开发框架,在中国很多的项目都正在使用它 ...
- vue的父子组件间的相互传参props及props数据的多种验证机制
感觉自己即将完全步入前端大军,后台老板都不需要我弄了,塞翁失马...时间会告诉我们是好是坏 好了言归正传,最近vue是搞的不亦乐乎啊,下面来总结一下vue组件间的各种使用方法以及一些技巧 ------ ...
- Spring基础系列-Web开发
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9996902.html SpringBoot基础系列-web开发 概述 web开发就是集成 ...
- KVM虚拟化使用详解--技术流ken
KVM介绍 Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中. KVM的虚拟化需要硬件支持 ...
- Ambiguous HTTP method Actions require an explicit HttpMethod binding for Swagger 2.0
异常内容 NotSupportedException: Ambiguous HTTP method for action . Actions require an explicit HttpMetho ...
- Spring Boot 和 Docker 实现微服务部署
Spring boot 开发轻巧的微服务提供了便利,Docker 的发展又极大的方便了微服务的部署.这篇文章介绍一下如果借助 maven 来快速的生成微服务的镜像以及快速启动服务. 其实将 Sprin ...
- Java开发相关的linux一些基础命令,必须要掌握的
1.查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件. find . -name "*.xml" 递归查找所有的 ...