安装sqlalchemy

pip3 install sqlalchemy

创建表结构:

from sqlalchemy import Column,String,create_engine
from sqlalchemy.orm import sessionmaker,relationship
from sqlalchemy.ext.declarative import declarative_base import pymysql
#创建对象的基类
Base = declarative_base()
#定义user对象
class User(Base):
#表的名字
__tablename__ = 'user'
#表的结构
id = Column(Integer,primary_key=True,autoincrement=True)
name = Column(String(20))
#初始化数据库连接
#数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名 engine = create_engine('mysql+pymysql://root:123456@192.168.170.129:3306/learn_orm',max_overflow=5)
Base.metadata.create_all(engine) #创建DBSession类型
DBSession = sessionmaker(bind=engine)

一对多核多对多

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String,ForeignKey,UniqueConstraint,Index
from sqlalchemy.orm import sessionmaker,relationship
from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://root:123456@192.168.180.129:3306/test",max_overflow=5)
Base = declarative_base()
#创建单表
class Users(Base):
__tablename__ = 'users'
id = Column(Integer,primary_key=True)
name = Column(String(32))
extra = Column(String(16)) #一对多 class Favor(Base):
__tablename__ = 'favor'
nid = Column(Integer,primary_key=True)
caption = Column(String(50),default='red',unique=True) class Person(Base):
__tablename__ = 'person'
nid = Column(Integer,primary_key=True)
name = Column(String(32),index=True,nullable=True)
favor_id = Column(Integer,ForeignKey('favor.nid')) #多对多
class Group(Base):
__tablename__ = 'group'
nid = Column(Integer,primary_key=True)
name = Column(String(64),unique=True,nullable=False)
port = Column(Integer,default=22) class Server(Base):
__tablename__ = 'server'
id = Column(Integer,primary_key=True,autoincrement=True)
hostname = Column(String(64),unique=True,nullable=False)
class ServerToGroup(Base):
__tablename__ = 'servertogroup'
nid = Column(Integer,primary_key=True,autoincrement=True)
server_id = Column(Integer, ForeignKey('server.id'))
group_id = Column(Integer, ForeignKey('group.nid'))
# Base.metadata.create_all(engine) #生成表
Base.metadata.drop_all(engine) #生成表

#添加数据(往Users表增加数据)

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String,ForeignKey,UniqueConstraint,Index
from sqlalchemy.orm import sessionmaker,relationship
from sqlalchemy import create_engine
from orm一对多和多对多 import Users #从orm一对多和对多程序中导入Users类
engine = create_engine("mysql+pymysql://root:123456@192.168.180.129:3306/test",max_overflow=5)
Base = declarative_base()
Base.metadata.create_all(engine) #生成表
# Base.metadata.drop_all(engine) #生成表
Session = sessionmaker(bind=engine)
session = Session()
#增加数据
obj = Users(name="parktrick",extra="Devops")
session.add(obj)
session.commit() #不执行这步,数据是写入不了数据库的

#删除User表某条数据

#删除数据
session.query(Users).filter(Users.id > 2).delete() #把Users.id大于2的数据删除掉
session.commit()

#修改数据

#修改数据
session.query(Users).filter(Users.id > 1).update({"name":"bob"}) #修改User.id大于1的name为"bob"
session.commit()

 

python中orm框架学习的更多相关文章

  1. selenium + python自动化测试unittest框架学习(二)

    1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...

  2. python中confIgparser模块学习

    python中configparser模块学习 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section ...

  3. Python中字符串的学习

    Python中字符串的学习 一.字符串的格式化输出 % 占位符 %s 字符串 %d integer %x 十六进制 integer %f float 指定长度 %5d 右对齐,不足左边补空格 %-5d ...

  4. Python中定时任务框架APScheduler

    前言 大家应该都知道在编程语言中,定时任务是常用的一种调度形式,在Python中也涌现了非常多的调度模块,本文将简要介绍APScheduler的基本使用方法. 一.APScheduler介绍 APSc ...

  5. selenium + python自动化测试unittest框架学习(一)selenium原理及应用

    unittest框架的学习得益于虫师的<selenium+python自动化实践>这一书,该书讲得很详细,大家可以去看下,我也只学到一点点用于工作中,闲暇时记录下自己所学才能更加印象深刻. ...

  6. python的ORM框架SQLAlchemy

    本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业  一.ORM介绍 如果写程序用pymysql和程序交互,那是不是要写原生sql语句 ...

  7. Python中定时任务框架APScheduler的快速入门指南

    前言 大家应该都知道在编程语言中,定时任务是常用的一种调度形式,在Python中也涌现了非常多的调度模块,本文将简要介绍APScheduler的基本使用方法. 一.APScheduler介绍 APSc ...

  8. JavaSE中Map框架学习笔记

    前言:最近几天都在生病,退烧之后身体虚弱.头疼.在床上躺了几天,什么事情都干不了.接下来这段时间,要好好加快进度才好. 前面用了三篇文章的篇幅学习了Collection框架的相关内容,而Map框架相对 ...

  9. Python 中三大框架各自的应用场景??

    django:主要是用来搞快速开发的,他的亮点就是快速开发,节约成本,正常的并发量不过 10000,如果要实现高并发的话,就要对 django 进行二次开发,比如把整个笨重的框架给拆掉,自己写 soc ...

随机推荐

  1. Union-find 并查集

    解决问题 给一系列对点0~N-1的连接,判断某两个点p与q是否相连. private int[] id; // 判断p和q是否属于同一个连通分量 public boolean connected(in ...

  2. 洛谷P1364 医院设置

    LITTLESUN的第一道图论,撒花~~ 题目链接 这道题是Floyd的板子题 注意对于矩阵图的初始值赋值要全部赋值成最大值 十六进制的最大值表示方式是0x3f3f3f3f memset(G,0x3f ...

  3. jmeter之Synchronizing Timer的理解

    该功能类似loadrunner的集合点,一般按照jmeter的树形结构,放在需要设置集合点的请求之前,两个参数的意思,我们先看官网的解释: 大概意思就是: Number of Simulated Us ...

  4. 【APUE】Chapter1 UNIX System Overview

    这章内容就是“provides a whirlwind tour of the UNIX System from a programmer's perspective”. 其实在看这章内容的时候,已经 ...

  5. XPivot 用户手册及版本更新公示

    此文仅介绍XPivot的通用功能,如有对项目中定制的高级功能感兴趣的可留言讨论 XPivot当前版本v2.2 [2015-04-20发布] v2.1 下载链接: http://pan.baidu.co ...

  6. Leetcode. 回文字符串的分割和最少分割数

    Q1: 回文字符串的分割 Given a string s, partition s such that every substring of the partition is a palindrom ...

  7. 九度OJ--1167(C++)

    #include <iostream>#include <algorithm>#include <map> using namespace std; int mai ...

  8. BZOJ 4184 shallot 线性基+分治

    Description 小苗去市场上买了一捆小葱苗,她突然一时兴起,于是她在每颗小葱苗上写上一个数字,然后把小葱叫过来玩游戏. 每个时刻她会给小葱一颗小葱苗或者是从小葱手里拿走一颗小葱苗,并且让小葱从 ...

  9. Alpha项目冲刺(团队作业5)

    团队成员 组 员 学号 朱世杰 211414141 曹晔宁 211306302 一.冲刺(7次 Scrum) [Alpha版本]冲刺阶段--Day 1 [Alpha版本]冲刺阶段--Day 2 [Al ...

  10. mysql 查询表的字段数目

    select column_name from information_schema.`COLUMNS` where TABLE_NAME ='tcm_head'