orm_m2m.py
from sqlalchemy import Table,Column,Integer,String,DATE, ForeignKey
from sqlalchemy.orm import relationship ,sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine Base =declarative_base()#生成orm基类 book_m2m_author=Table('book_m2m_author', Base.metadata,
Column('book_id',Integer,ForeignKey('books.id')),
Column('author_id',Integer,ForeignKey('authors.id'))
) class Book(Base):
__tablename__ = 'books'
id =Column(Integer, primary_key=True)
name = Column(String(64))
pub_date=Column(DATE)
authors =relationship('Author',secondary=book_m2m_author,backref='books') def __repr__(self):
return self.name class Author(Base):
__tablename__ = 'authors'
id = Column(Integer, primary_key=True)
name = Column(String(32)) def __repr__(self): return self.name
'''?charset=utf8 就可以支持中文'''
engine = create_engine("mysql+pymysql://root:521521@192.168.71.140/oldboy?charset=utf8",
) # 可以加echo=True显示数据 Base.metadata.create_all(engine)#创建表结构
orm_m2m_api.py

from day12 import orm_m2m

from sqlalchemy.orm import sessionmaker

Session_class = sessionmaker(bind=orm_m2m.engine)

Session =Session_class()#游标

'''插入数据'''
Python = orm_m2m.Book(name="Python", pub_date="2018-07-17")
Java = orm_m2m.Book(name="JAVA", pub_date="2018-07-16")
Php = orm_m2m.Book(name="PHP", pub_date="2018-07-15") a1 = orm_m2m.Author(name="xiaopang")
a2 = orm_m2m.Author(name="dapangpang")
a3 = orm_m2m.Author(name="Xiaopang_to_Dapangpang") # Python.authors=[a1,a2]
# Java.authors=[a1,a2,a3]
# Php.authors = [a1,a3]
# Session.add_all([Python,Java,Php,a1,a2])
'''查询数据'''
#查找dapangpang这个作者创作了几本书
author_obj =Session.query(orm_m2m.Author).filter(orm_m2m.Author.name=="dapangpang").first()
print(author_obj)
#查找orm_m2m.Book.id==1的这本书有几个作者
book_obj =Session.query(orm_m2m.Book).filter(orm_m2m.Book.id==2).first()
print(book_obj.authors) '''删除数据'''
book_obj =Session.query(orm_m2m.Book).filter(orm_m2m.Book.id==1).first()
book_obj.authors.remove(author_obj)#从一本书里删除一个作者 #删除作者
author_obj =Session.query(orm_m2m.Author).filter(orm_m2m.Author.name=="dapangpang").first()
Session.delete(author_obj)
Session.commit()#提交

Mysql-Sqlalchemy-ORM-many_to_many的更多相关文章

  1. MySQL之ORM框架SQLAlchemy

    一 介绍 SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取 ...

  2. sqlalchemy orm 操作 MySQL

    一.ORM介绍 orm英文全称object relational mapping,是对象映射关系程序,简单来说类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的,为了 ...

  3. 第二百八十九节,MySQL数据库-ORM之sqlalchemy模块操作数据库

    MySQL数据库-ORM之sqlalchemy模块操作数据库 sqlalchemy第三方模块 sqlalchemysqlalchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API ...

  4. sqlalchemy ORM模块使用介绍

    前几天用到了flask框架,所以顺带介绍了flask-sqlalchemy扩展模块,去瞄一眼,由于有好多非web的python程序也用到了数据库,所以今天分享一下sqlalchemy的模块的使用方法. ...

  5. Python-12-MySQL & sqlalchemy ORM

    MySQL MySQL相关文章这里不在赘述,想了解的点击下面的链接: >> MySQL安装 >> 数据库介绍 && MySQL基本使用 >> MyS ...

  6. sqlalchemy ORM

    本节内容       ORM介绍     sqlalchemy安装     sqlalchemy基本使用     多外键关联     多对多关系   1. ORM介绍   orm英文全称object ...

  7. SQLAlchemy ORM之建表与查询

    作了最基本的操作,找找感觉.. #coding=utf-8 from datetime import datetime from sqlalchemy import (MetaData, Table, ...

  8. python 学习笔记十一 SQLALchemy ORM(进阶篇)

    SqlAlchemy ORM SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据A ...

  9. Python-Day12 Python mysql and ORM

    一.Mysql数据库 1.什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,    每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据 ...

  10. 那些年被我坑过的Python——牵一发动全身 第十一章MySQL、ORM

    #!/usr/bin/env python # -*- coding:utf-8 -*- __Author__ = "Zhang Xuyao" from sqlalchemy im ...

随机推荐

  1. Python中Bool为False的情况

    在python中,以下数值会被认为是False: 为0的数字,包括0,0.0空字符串,包括'', ""表示空值的None空集合,包括(),[],{}其他的值都认为是True. No ...

  2. 黑马lavarel教程---9、缓存操作

    黑马lavarel教程---9.缓存操作 一.总结 一句话总结: legend2项目中自己写的哪些文件操作都可以通过这里的缓存实现,简单方便 1.lavarel中如何使用后端主流的缓存如 Memcac ...

  3. Qt多线程应用--QRunnable

    http://blog.csdn.net/lefttime/article/details/5717349 作为Qt类中少有的基类, QRunnable提供了简洁有效的可运行对象的创建.  用QRun ...

  4. 如何解决Sublime text中文乱码问题

    Sublime Text 2是一个非常不错的源代码及文本编辑器,但是不支持GB2312和GBK编码在很多情况下会非常麻烦.不过Sublime Package Control所以供的插件可以让Subli ...

  5. [转]Nginx配置信息详解

    序言 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. Nginx功能丰富,可作为HTTP服务器,也 ...

  6. 发布机制-灰度发布-例子:Gmail Labs

    ylbtech-发布机制-灰度发布-例子:Gmail Labs Gmail Labs是一个新特性橱窗,用户可以自己选择一些未正式发布的新特性进行体验,不喜欢可以关闭,在这个过程中,吃了螃蟹,也当了Go ...

  7. HTTP状态码分类及异常状态码处理

    1xx:表示临时响应100:(继续)请求者应当继续提出请求.服务器返回此代码表示已收到请求的第一部分,正在等待其余部分101:(切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换 2xx:表 ...

  8. 11. Ingress及Ingress Controller(主nginx ingress controller)

    11. Ingress,Ingress Controller拥有七层代理调度能力 什么是Ingress: Ingress是授权入站连接到达集群服务的规则集合 Ingress是一个Kubernetes资 ...

  9. plantuml语法

    活动图(新语法) 当前活动图(activity diagram)的语法有诸多限制和缺点,比如代码难以维护. 所以从V7947开始提出一种全新的.更好的语法格式和软件实现供用户使用(beta版). 就像 ...

  10. iOS开发UIkit动力学UIDynamicAnimator一系列动画

    UIDynamicAnimator类,通过这个类中的不同行为来实现一些动态特性. UIAttachmentBehavior(吸附),UICollisionBehavior(碰撞),UIGravityB ...