#!/usr/bin/python
# -*- coding: utf-8 -*-
from sqlalchemy import create_engine
from sqlalchemy import Table, MetaData, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import mapper, sessionmaker

# 创建实例,并连接test库
engine = create_engine("mysql+pymysql://root:123@localhost/demoDb?charset=utf8", encoding='utf-8', echo=True)
metadata = MetaData()
# echo=False 显示信息
Base = declarative_base()  # 生成orm基类

class User(Base):
    __tablename__ = 'user'  # 表名
    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    password = Column(String(64))

def __init__(self):
        # 创建与数据库的会话session class ,注意,这里返回给session的是个class,不是实例
self.session_class = sessionmaker(bind=engine) # 实例和engine绑定
        self.session = self.session_class()  # 生成session实例,相当于游标

# 创建表
    def create_user(self):
        Base.metadata.create_all(engine)  # 创建表结构 (这里是父类调子类)

# 新增数据
    def insert_user(self, user):
        self.session.add(use)  # 把要创建的数据对象添加到这个session里, 一会统一创建
        return self.session.commit()  # 现此才统一提交,创建数据

# 根据一个字段查询
    def sel_user(self):
        my_user = self.session.query(User).filter_by(name="12").first()  # 查询
        return my_user

'''
    ----------------     条件查询    ----------------
        my_user1 = self.session.query(User).filter(User.id > 2).all()
        my_user2 = self.session.query(User).filter_by(id=27).all()  # filter_by相等用‘=’
        my_user3 = self.session.query(User).filter(User.id == 27).all()  # filter相等用‘==’
    ----------------     多条件查询  ----------------
        objs = self.session.query(User).filter(User.id>0).filter(User.id<7).all()

--------------     模糊查询,返回count    ------------
        self.session.query(User).filter(User.name.like("f%")).count()  # mysql不区分大小写

----------------     分组查询    ----------------
        self.session.query(User.name,func.count(User.name)).group_by(User.name).all()

----------------     连表查询    ----------------
        ret = self.session.query(Users, Favor).filter(Users.id == Favor.nid).all()
        # 以下两种 必须表之间有外键关联才能查
        ret = session.query(Person).join(Favor).all() 
        ret = session.query(Person).join(Favor, isouter=True).all()
    '''
    # 查询所有
    def sel_user_all(self):
        return self.session.query(User).all()
        # return self.session.query(User.id,User.name).all() #查询所有,结果集只包含 id,name

# 修改操作
    def up_user(self):
        my_user = self.session.query(User).filter_by(name="fgf").first()
        my_user.name = "fenggf"  # 查询出来之后直接赋值修改
        my_user.passwork = "123qwe"
        self.session.commit()

if __name__ == '__main__':
    use = User()
    user_list = use.sel_user_all()
    for us in user_list:
        print us.name

python orm框架的更多相关文章

  1. Python ORM框架之SQLAlchemy

    前言: Django的ORM虽然强大,但是毕竟局限在Django,而SQLAlchemy是Python中的ORM框架: SQLAlchemy的作用是:类/对象--->SQL语句--->通过 ...

  2. python ORM框架:SqlAlchemy

    ORM,对象关系映射,即Object Relational Mapping的简称,通过ORM框架将编程语言中的对象模型与数据库的关系模型建立映射关系,这样做的目的:简化sql语言操作数据库的繁琐过程( ...

  3. Python ORM框架之 Peewee入门

    之前在学Django时,发现它的模型层非常好用,把对数据库的操作映射成对类.对象的操作,避免了我们直接写在Web项目中SQL语句,当时想,如果这个模型层可以独立出来使用就好了,那我们平台操作数据库也可 ...

  4. Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍

    1. 添加一个新对象 前面介绍了映射到实体表的映射类User,如果我们想将其持久化(Persist),那么就需要将这个由User类建立的对象实例添加到我们先前创建的Session会话实例中: 复制代码 ...

  5. python orm框架-----SQLALchemy-查询篇

    似乎ORM最难设计的部分是查询.特别是面向对象的查询,今天学习SQLAlchemy,发现SQLAlchemy的查询语法竟如此灵活,惊叹其如此强大的表达能力的同时也对Python也有了更深的认识.下面看 ...

  6. Django和SQLAlchemy,哪个Python ORM更好?

    ORM是什么? 在介绍Python下的两个ORM框架(Django和SQLAlchemy)的区别之前,我们首先要充分了解ORM框架的用途. ORM代表对象关系映射.ORM中的每个单词解释了他们在实际项 ...

  7. Python操作mysql之SQLAchemy(ORM框架)

    SQLAchemy SQLAchemy 解析: SQLAchemy是python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作, 简言之便是:将对象转换成SQ ...

  8. Python操作redis、memcache和ORM框架_Day13

    一.memcache Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速 ...

  9. python(十二)下:ORM框架SQLAlchemy使用学习

    此出处:http://blog.csdn.net/fgf00/article/details/52949973 本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 ...

随机推荐

  1. Kde桌面的Mac化

    KDE->Mac \(Mac\) 的审美可以说是很成熟了,确实让人很喜欢啊!于是不由得想弄一个 \(Mac\) 风的桌面. 先放张图吧: 效果还蛮不错的哇. \(Mac\) 原生的壁纸下载链接: ...

  2. pronaunciation

    5 strong  weak s            d n            t l             th you and I  -> you an dai -> you ...

  3. hbuilder + 夜神模拟器

    1. 安装hbuilder.夜神模拟器 2. 将夜神模拟器设为手机版,启用急速模式 3. 打开夜神模拟器设置,进入关于手机,点击版本号启用开发者模式 4. 进入开发者模式设置,启用usb调试 5. h ...

  4. 分页查询最好加排序(order by)

    昨天,与外部化系统对接时,发现有一个数据一直咩有集成到,双方各自排查了自己系统的代码,都觉得逻辑非常简单,无法就是一个分页查询而已. 问题就出在这个分页查询上. 为了说明当时问题发生的情景,我模拟了一 ...

  5. Linux服务器,服务管理--systemctl命令详解,设置开机自启动

    Linux服务器,服务管理--systemctl命令详解,设置开机自启动 syetemclt就是service和chkconfig这两个命令的整合,在CentOS 7就开始被使用了. 摘要: syst ...

  6. PyQt5——高级控件

    PyQt5高级控件使用方法详见:https://blog.csdn.net/jia666666/article/list/4?t=1& PyQt5高级控件汇总: 1.QTableView 2. ...

  7. Hadoop分布式文件系统HDFS的工作原理

    Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.它能提供高吞吐量的数据访问,非常适合大规模数据集上的应 ...

  8. Elasticsearch+Mongo亿级别数据导入及查询实践

    数据方案: 在Elasticsearch中通过code及time字段查询对应doc的mongo_id字段获得mongodb中的主键_id 通过获得id再进入mongodb进行查询   1,数据情况: ...

  9. Google Analytics电子商务篇(Universal版)

    Google Analytics是一款用于统计分析网站流量.浏览行为,可用于衡量用户与您网站的互动情况的全新方式.最近刚接触不久,发现其功能真的十分强大,记录下电子商务配置方法.(新手,老鸟勿喷) G ...

  10. 简单的epub制作

    最近在无聊看轻小说的时候,找到了一套叫<白银龙王的摇篮>的书. 台版一共出了6卷,并且wenku8都已经录入了,但是轻国的epub录入只有2卷. 我寻思着做epub也不是什么难事,就稍微百 ...