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, ...
随机推荐
- Java微服务之Spring Boot on Docker
本文学习前提:Java, Spring Boot, Docker, Spring Cloud 一.准备工作 1.1 安装Docker环境 这一部分请参考我的另一篇文章<ASP.NET Core ...
- 《前端之路》之三 数组的属性 && 操作方法(下)
咱们 接着上篇来讲- 7.slice() 从某个已有的数组返回选定的元素 经常用来将类数组转化成数组,这样做一方面可以利用现有的数组方法更加方便的处理,另一方面是处于性能的考虑 var f = fun ...
- 从零开始搭建etcd分布式存储系统+web管理界面
什么是ETCD 随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作为一个高可用.强一致性的服务发现存储仓库,渐渐为开发人员所关注. 在云计算时代,如何让服 ...
- Python Ast介绍及应用
Abstract Syntax Trees即抽象语法树.Ast是python源码到字节码的一种中间产物,借助ast模块可以从语法树的角度分析源码结构.此外,我们不仅可以修改和执行语法树,还可以将Sou ...
- Linux高级运维 第二章 Linux基本操作和自己动手组装服务器
2.1 Linux网络相关概念和修改IP地址的方法 2.1.1 网卡的命名规则 Centos 6的网卡命名方式:它会根据情况有所改变而非唯一且固定,在CENTOS6之前,网络接口使用连 ...
- connection holder is null新增解决方案(2018-06-02)
最近在做Java后台的项目,用到了druid数据库连接池,阿里出品,肯定是精品的意思咯,这也是我们老大搭建的框架,我就站在前人的肩膀上飞翔了.先前在一个事物里,使用了多条数据库操作,都是正常的,但是前 ...
- Java工具类——通过配置XML验证Map
Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...
- vuex的用法
https://segmentfault.com/a/1190000015782272
- NET4.6下的UTC时间转换
int UTCSecond = (int)((DateTimeOffset)DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local)).ToUnix ...
- Android Studio教程01-的工程和目录结构解析
目录 1.主目录 1.1. app目录 1.2.项目资源文件夹res 2. 理解build.gradle文件 2.1. 外部build.gradle 2.2. app文件下的build.gradle ...