Mysql-Sqlalchemy-ORM-many_to_many
- 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的更多相关文章
- MySQL之ORM框架SQLAlchemy
一 介绍 SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取 ...
- sqlalchemy orm 操作 MySQL
一.ORM介绍 orm英文全称object relational mapping,是对象映射关系程序,简单来说类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的,为了 ...
- 第二百八十九节,MySQL数据库-ORM之sqlalchemy模块操作数据库
MySQL数据库-ORM之sqlalchemy模块操作数据库 sqlalchemy第三方模块 sqlalchemysqlalchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API ...
- sqlalchemy ORM模块使用介绍
前几天用到了flask框架,所以顺带介绍了flask-sqlalchemy扩展模块,去瞄一眼,由于有好多非web的python程序也用到了数据库,所以今天分享一下sqlalchemy的模块的使用方法. ...
- Python-12-MySQL & sqlalchemy ORM
MySQL MySQL相关文章这里不在赘述,想了解的点击下面的链接: >> MySQL安装 >> 数据库介绍 && MySQL基本使用 >> MyS ...
- sqlalchemy ORM
本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 1. ORM介绍 orm英文全称object ...
- SQLAlchemy ORM之建表与查询
作了最基本的操作,找找感觉.. #coding=utf-8 from datetime import datetime from sqlalchemy import (MetaData, Table, ...
- python 学习笔记十一 SQLALchemy ORM(进阶篇)
SqlAlchemy ORM SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据A ...
- Python-Day12 Python mysql and ORM
一.Mysql数据库 1.什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据 ...
- 那些年被我坑过的Python——牵一发动全身 第十一章MySQL、ORM
#!/usr/bin/env python # -*- coding:utf-8 -*- __Author__ = "Zhang Xuyao" from sqlalchemy im ...
随机推荐
- CentOS7遇到问题总结
问题1.保护多库版本:libstdc++-4.8.5-28.el7_5.1.i686 != libstdc++-4.8.5-28.el7.x86_64 错误:保护多库版本:libgcc-4.8.5-2 ...
- C++cctype软件包函数摆脱,ASCII码!
对于字符,你是否还在用ASCII码? 下面是C++的函数库,摆脱ASCI码! 1.isalnum(): 判断是否为数字和字母 2.isalpha(): 判断是否是字母 3.iscntrl(): 判断是 ...
- hadoop patch
ERROR org.apache.hadoop.hdfs.server.blockmanagement.BlockManager: ReplicationMonitor thread received ...
- 使用git Bash Here 绑定账号密码错误后 无法自动重新绑定
新安装的git 要打开gitbash 运行下面两个命令:1 git config --global user.name "Your Name"2 git config --glob ...
- JVM----Class类文件结构
JVM平台无关性 Java具有平台无关性,也就是任何操作系统都能运行Java代码.之所以能实现这一点,是因为Java运行在虚拟机之上,不同的操作系统都拥有各自的Java虚拟机,因此Java能实现“一次 ...
- 性能监控系统 | 从0到1 搭建Web性能监控系统
工具介绍 1. Statsd 是一个使用Node开发网络守护进程,它的特点是通过UDP(性能好,及时挂了也不影响主服务)或者TCP来监听各种数据信息,然后发送聚合数据到后端服务进行处理.常见支持的「G ...
- Android系统服务 —— WMS与AMS
“可以毫不夸张的说,Android的framework层主要是由WMS.AMS还有View所构成,这三个模块穿插交互在整个framework中,掌握了它们之间的关系和每一个逻辑步骤,你对framewo ...
- 一百零六:CMS系统之修改邮箱功能完成
这里采用把验证码放到memcached中,所以封装一个memcached的操作 import memcache cache = memcache.Client(['127.0.0.1:11211'], ...
- Oracle 本地创建多个实例并创建多个监听(只能在服务端弄,不可在客户端)
注意:监听必须在客户端创建,在客户端创建,会报错. 1.创建监听 通过 Net Configuration Assistant 创建监听,设置端口: 注意:此监听创建完后,服务列表里面并没有此服务的 ...
- ssm整合用到的依赖jar包(不充足)
<!--spring 的核心的jar包--><dependency> <groupId>org.springframework</groupId> &l ...