sqlalchemy操作----外键关联,relationship
...
#!_*_coding:utf-8_*_
#__author__:"Alex huang"
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String,ForeignKey
from sqlalchemy.orm import relationship engine = create_engine("mysql+pymysql://hrg:123@192.168.80.100:3306/test",encoding='utf8')
Base = declarative_base() #生成orm基类 class students(Base):
__tablename__ = 'students' #表名
id = Column(Integer, primary_key=True)
name = Column(String(32))
password = Column(String(64))
def __repr__(self):
return "id:%s name:%s" %(self.id,self.name) class studyrecord(Base):
__tablename__ = 'studyrecord' #表名
id = Column(Integer, primary_key=True)
day = Column(String(32))
status = Column(String(32))
stu_id = Column(Integer,ForeignKey("students.id")) #创建外键
students = relationship("students",backref="my_studyrecord") #创建关系,是在内存中映射的,没有实际创建表,
#backref回调引用,students表可以通过my_studyrecord来引用studyrecord的数据
def __repr__(self):
return "%s day:%s status:%s" %(self.students.name,self.day,self.status) Base.metadata.create_all(engine) #创建表
Session_class = sqlalchemy.orm.session.sessionmaker(bind=engine) # 创建与数据库的会话session class ,注意,这里返回给session的是个class,不是实例
Session = Session_class() # 生成session实例
#
#插入 第一次运行先插入数据
# s1 = students(name='hrg',password='111')
# s2 = students(name='keke',password='122')
# s3 = students(name='tom',password='333')
# r1 = studyrecord(day='1',status='yes',stu_id='1')
# r2 = studyrecord(day='1',status='yes',stu_id='2')
# r3= studyrecord(day='2',status='no',stu_id='1')
# r4 = studyrecord(day='3',status='yes',stu_id='1')
# r5 = studyrecord(day='3',status='yes',stu_id='2')
#
# Session.add_all([s1,s2,s3,r1,r2,r3,r4,r5])
# Session.commit() data = Session.query(students).filter(students.name=='hrg').first() #先students表里名称为hrg的第一条记录
print(data.my_studyrecord) #打印hrg在studyrecord中的相关记录
...
sqlalchemy操作----外键关联,relationship的更多相关文章
- Python sqlalchemy orm 外键关联
创建外键关联 并通过relationship 互相调用 如图: 实现代码: import sqlalchemy # 调用链接数据库 from sqlalchemy import create_engi ...
- sqlalchemy多外键关联
一.前言 如果有张表A的多个字段关联另一张表B的一个字段,就如同一个客户表的账单地址和发货地址,同时关联地址表中的id字段. 二.事例 # -*- coding: UTF-8 -*- from sql ...
- sqlalchemy的外键与relationship查询
https://www.cnblogs.com/goldsunshine/p/9269880.html 讲的很详细. http://www.bjhee.com/flask-ext4.html 思诚之道 ...
- sqlalchemy外键和relationship查询
前面的文章中讲解了外键的基础知识和操作,上一篇文章讲解了sqlalchemy的基本操作.前面两篇文章都是作为铺垫,为下面的文章打好基础.记得初一时第一次期中考试时考的不好,老爸安慰我说:“学习是一个循 ...
- Python sqlalchemy orm 多外键关联
多外键关联 注:在两个表之间进行多外键链接 如图: 案例: # 创建两张表并添加外键主键 # 调用Column创建字段 加类型 from sqlalchemy import Integer, For ...
- Python sqlalchemy orm 多对多外键关联
多对多外键关联 注:使用三张表进行对应关联 实现代码: # 创建3个表 配置外键关联 # 调用Column创建字段 加类型 from sqlalchemy import Table, Column, ...
- 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 ...
- Entity FrameWork对有外键关联的数据表的添加操作
前天做了一个MVC Entity FrameWork项目,遇到有外键关联的数据编辑问题.当你编辑的时候,按照正常的逻辑,把每个字段的数据都对号入座了,然后点击保存按钮,本以为会顺理成章的编辑数据,但是 ...
随机推荐
- 性能测试-11.Linux服务器使用NMON监控指标
一.NMON使用 首先下载nmon软件http://nmon.sourceforge.net/pmwiki.php?n=Site.Download,打开这个网站下载符合自己操作系统的硬件的相关nmon ...
- iOS原生和React-Native之间的交互1
今天,记录一下iOS原生和React-Native之间的交互.如果第一次接触最好先移步至 http://www.cnblogs.com/shaoting/p/6388502.html 先看一下怎么在i ...
- SQL注入之Sqli-labs系列第二十四关(二阶注入)
开始挑战第二十四关(Second Degree Injections) 0x1 前言 SQL注入一般分为两类:一阶SQL注入(普通SQL注入),二阶SQL注入 .二次注入不是注入两次的意思,请不要混淆 ...
- SQL注入之Sqli-labs系列第十九关(基于头部的Referer POST报错注入)
开始挑战第十八关(Header Injection- Referer- Error Based- string) 先来说下HTTP Referer: HTTP Referer是header的一部分,当 ...
- Python之路PythonThread,第一篇,进程1
python3 进程1 多任务编程: 可以有效的利用计算机资源,同时执行多个任务, 进程:进程就是程序在计算机中一次执行的结果: 进程和程序的区别: 程序是一个静态文件的描述,不占用计算机的系统资源: ...
- Arcgis发布服务
1.文件<<共享为<<服务. 2.发布服务<<在下拉菜单选择已经创建的server连接,输入服务名称<<选择服务发布的位置(默认在根目录下,也可以在子文 ...
- 20155219 2016-2017-2 《Java程序设计》第8周学习总结
20155219 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口, ...
- 基于Flask开发web微信
1. 获取二维码 app.py import re import time import requests from flask import Flask,render_template app = ...
- PS学习之合成特效:被风沙侵蚀的动物们
素材 大象 尘埃 裂纹 沙子 土地 正式操作: 打开PS 新建一个文件 选国际标准纸张 给分辨率为72(分辨率越大越占内存) 然后确定 将图片旋转90度(图像——旋转——(顺/逆)90度) 下面选 ...
- 行级锁 java||数据库
http://www.cnblogs.com/xiyubaby/p/4623516.html select * from t for update 会等待行锁释放之后,返回查询结果. select * ...