建表

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 外键的更多相关文章

  1. sqlalchemy外键和relationship查询

    前面的文章中讲解了外键的基础知识和操作,上一篇文章讲解了sqlalchemy的基本操作.前面两篇文章都是作为铺垫,为下面的文章打好基础.记得初一时第一次期中考试时考的不好,老爸安慰我说:“学习是一个循 ...

  2. 吃货眼中的sqlalchemy外键和连表查询

    前言 使用数据库一个高效的操作是连表查询,一条查询语句能够查询到多个表的数据.在sqlalchem架构下的数据库连表查询更是十分方便.那么如何连表查询?以及数据库外键对连表查询有没有帮助呢?本篇文章就 ...

  3. sqlalchemy外键的一些东西

    sqlalchemy中让MySQL支持中文字符 engine = create_engine("mysql+pymysql://root:mysql8@localhost/mysqltest ...

  4. flask SQLALchemy外键及约束

    from flask import Flask,session from flask_sqlalchemy import SQLAlchemy import config app = Flask(__ ...

  5. pythonのsqlalchemy外键关联查询

    #!/usr/bin/env python import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.dec ...

  6. sqlalchemy外键关联

    一.创建两张表,并关联外键 导入ForenginKey模块 # -*- coding: UTF-8 -*- from sqlalchemy import create_engine from sqla ...

  7. 【Flask】Sqlalchemy 外键

    ### 外键:使用SQLAlchemy创建外键非常简单.在从表中增加一个字段,指定这个字段外键的是哪个表的哪个字段就可以了.从表中外键的字段,必须和父表的主键字段类型保持一致.示例代码如下: from ...

  8. SQLAlchemy外键的使用

    orm可以将数据库存储的数据封装成对象,同时,如果封装的好的话,所有的数据库操作都可以封装到对象中.这样的代码在组织结构上会非常的清晰,并且相对与使用sql语句在sql注入方面会极具降低. SQLAl ...

  9. Python自动化之sqlalchemy复合外键

    复合外键用法 metadata = MetaData(engine) classedu = Table('classedu', metadata, # Column('qq', BigInteger, ...

随机推荐

  1. MySQL学习(一)日志与索引 --- 2019年1月

    1.MySQL的架构 1).连接器 先根据Ip和端口号,用户名和密码,连接MySQL数据库,连接后如果没有下一步动作,连接就处于空闲状态,此时有一个连接超时时间的设置 wait_timeout默认8小 ...

  2. Java Spring MVC框架搭建(一)

    环境准备 >>>>>>java JDK和tomcat,eclipse 1.创建项目 2.项目名称自定义,这边为demo 3.我们已经创建完一个动态网站的项目,还得下 ...

  3. ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路

    一.前言  最近一段时间自己主要的学习计划还是按照毕业后设定的计划,自己一步步的搭建一个前后端分离的 ASP.NET Core 项目,目前也还在继续学习 Vue 中,虽然中间断了很长时间,好歹还是坚持 ...

  4. Asp .Net Core 读取appsettings.json配置文件

         Asp .Net Core 如何读取appsettings.json配置文件?最近也有学习到如何读取配置文件的,主要是通过 IConfiguration,以及在Program中初始化完成的. ...

  5. Litepal【开源数据库ORM框架】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 好用的数据库框架. 效果图 代码分析 本篇主要是整理Litepal的引入和增删改查的简单操作,具体使用请阅读参考资料. 使用步骤 一 ...

  6. 数据结构之表(C语言实现)

    抽象数据类型 (abstract data type,ADT) 抽象数据类型是一些操作的集合.抽象数据类型是数学中的定义,在ADT中,我们不关心操作是如何被实现的.因此,这可以看做是模块化的扩充.例如 ...

  7. springboot~环境搭建与Helloworld

    转了,非转了 只是项目需要,从.net到java,以后可以学习java的思想把它应用到.net上来,让咱们的.net越来越强大,springbool是一个强大的框架,几乎有了你想要的所有功能模块,大叔 ...

  8. Reactor 典型的 NIO 编程模型

    Doug Lea 在 Scalable IO in Java 的 PPT 中描述了 Reactor 编程模型的思想,大部分 NIO 框架和一些中间件的 NIO 编程都与它一样或是它的变体.本文结合 P ...

  9. 整合 MyPerf4J 做Java性能监控和统计工具

    快速启动MyPerf4J MyPerf4J 采用 JavaAgent 配置方式,透明化接入应用,对应用代码完全没有侵入. 打包 项目地址: https://github.com/LinShunKang ...

  10. Windows Server 2008 中iis反向代理设置

    1.安装 IIS(Windows专业版自带,如果是server版系统,需要通过功能管理器安装(无需下载)) urlrewrite插件,https://www.iis.net/downloads/mic ...