安装 >pip install sqlalchemy

  1. #coding=utf-8
  2. '''
  3. 原始的sql语句
  4. CREATE TABLE user (
  5. id INTEGER NOT NULL AUTO_INCREMENT,
  6. name VARCHAR(32),
  7. password VARCHAR(64),
  8. PRIMARY KEY (id)
  9.  
  10. )
  11. '''
  12. #使用orm代码
  13.  
  14. import sqlalchemy
  15. from sqlalchemy import create_engine
  16. from sqlalchemy.ext.declarative import declarative_base
  17. from sqlalchemy import Column, Integer, String
  18. engine = create_engine("mysql+pymysql://root:123456@192.168.70.129/my", #建立数据库连接
  19. encoding='utf-8', echo=False) #打印echo信息
  20. Base = declarative_base() # 生成orm基类
  21. class User(Base):
  22. __tablename__ = 'user1' # 表名
  23. id = Column(Integer, primary_key=True)
  24. name = Column(String(32))
  25. password = Column(String(64))
  26.  
  27. def __repr__(self):
  28. return '%s name:%s' % (self.id, self.name)
  29.  
  30. class User2(Base):
  31. __tablename__ = 'user2' # 表名
  32. id = Column(Integer, primary_key=True)
  33. name = Column(String(32))
  34. password = Column(String(64))
  35.  
  36. def __repr__(self):
  37. return '%s name:%s'%(self.id,self.name)
  38.  
  39. Base.metadata.create_all(engine) # base运行之后就会把继承他的所有子类表创建起来
  40. #另一种不常用的创建方式
  41. '''
  42. from sqlalchemy import Table, MetaData, Column, Integer, String, ForeignKey
  43. from sqlalchemy.orm import mapper
  44. metadata = MetaData()
  45. user = Table('user', metadata,
  46. Column('id', Integer, primary_key=True),
  47. Column('name', String(50)),
  48. Column('fullname', String(50)),
  49. Column('password', String(12))
  50. )
  51. class User(object):
  52. def __init__(self, name, fullname, password):
  53. self.name = name
  54. self.fullname = fullname
  55. self.password = password
  56. mapper(User,
  57. user) # the table metadata is created separately with the Table construct, then associated with the User class via the mapper() function
  58. '''
  59. #————————————————————————增加————————————————————
  60. from sqlalchemy.orm import sessionmaker #操作表要导入这个模块
  61. Session_class = sessionmaker(bind=engine) # 创建与数据库的会话session class ,
  62. # 注意,这里返回给session的是个class,不是实例,与数据库连接绑定bind=engine
  63. Session = Session_class() # 生成session实例 相当于pymysql里面的cursor
  64. # user_obj = User(name="dzz", password="123456") # 生成你要创建的数据对象
  65. # user_obj1 = User(name="asd", password="123456")
  66. # user_obj2 = User2(name="asd", password="123456")
  67. # print(user_obj.name, user_obj.id) # 此时还没创建对象呢,不信你打印一下id发现还是None
  68. # Session.add(user_obj) # 把要创建的数据对象添加到这个session里, 一会统一创建
  69. # Session.add(user_obj2)
  70. # Session.add(user_obj1)
  71. #
  72. # print(user_obj.name, user_obj.id) # 此时也依然还没创建
  73. # Session.commit() # 现此才统一提交,创建数据
  74. # print(user_obj.name, user_obj.id,user_obj.password)
  75. #——————————————查询
  76. data = Session.query(User2).filter_by(name = 'zq').all() #返回一个列表,查一条
  77. print '++>',data[0].name,data[0].password
  78. print '++>',data
  79.  
  80. data = Session.query(User2).filter_by().all() #在User2表的类里面加入了__repr__内置方法,就可显示了
  81. print data
  82.  
  83. data = Session.query(User2).filter(User2.id>1).first() #单条,
  84. print '>>',data
  85.  
  86. data = Session.query(User2).filter(User2.id>1).filter(User2.id<3).first() #多条
  87. print '>>',data
  88.  
  89. #修改——————————
  90. data = Session.query(User2).filter(User2.id>1).filter(User2.id<3).first() #多条件
  91. print '>>',data
  92. data.name = 'rest'
  93. data.password = 'qqqqq'
  94. Session.commit()
  95. data = Session.query(User2).filter(User2.id>1).filter(User2.id<3).all()
  96. print '>>',data
  97. #回滚——————
  98. user_obj4 = User2(name="zte", password="123456")
  99. Session.add(user_obj4)
  100. print '>>>#',Session.query(User2).filter(User2.name.in_(['zte'])).all()
  101. Session.rollback()
  102. print Session.query(User2).filter(User2.name.in_('zte')).all()
  103. #分组统计
  104. data = Session.query(User2).filter(User2.id>1).filter(User2.id<4).count()
  105. print data
  106.  
  107. from sqlalchemy import func
  108.  
  109. #分组需要导入一个模块
  110. data = Session.query(User2.name,func.count(User2.name)).group_by(User2.name).all()
  111. print data
  112.  
  113. #连表查询
  114. print Session.query( User2,User).filter(User2.id == User.id).all()
  115. #print Session.query( User2).join(User).all() #要求两个表有外键关联
  116. #print Session.query( User2).join(User,isouter=True).all()

python ORM的使用的更多相关文章

  1. python/ORM操作详解

    一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...

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

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

  3. Python ORM框架之 Peewee入门

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

  4. python orm框架

    #!/usr/bin/python# -*- coding: utf-8 -*-from sqlalchemy import create_enginefrom sqlalchemy import T ...

  5. MySQL(Python+ORM)

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  6. Python ORM框架之SQLAlchemy

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

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

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

  8. python ORM - sqlalchemy 操作使用

    python操作数据库 使用 ORM - sqlalchemy,pymsql 安装: pip install pymsq pip install sqlalchemy 一. '''连接数据库'''   ...

  9. Python ORM

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

  10. python orm / 表与model相互转换

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

随机推荐

  1. 2019南京网赛 The beautiful values of the palace(思维,树状数组

    https://nanti.jisuanke.com/t/41298 题意:给一个n * n的螺旋矩阵,n保证是奇数,取一些点使其.获得价值,价值为数位和,然后再给q次查询,求矩阵中的价值总和 思路: ...

  2. Python---基础-小游戏用户猜数字2

    一.使用int()将小数转换成整数,结果是向上取数还是向下取数 int(3,4) print(int(3,4)) ####写一个程序,判断给定年份是否为闰年 - 闰年的定义,能够被4整除的年份就叫闰年 ...

  3. OC中SEL,类别,继承,协议的使用

    1.SEL SEL是selector的缩写,selector在OC中作用是定义一个方法变量,通过该方法变量来调用方法.我们在后面的UI中会经常用selector来调用事件方法.下面我将举两个例子来说明 ...

  4. web应用,http协议简介,web框架

    一.web应用 web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...

  5. php str_word_count()函数 语法

    php str_word_count()函数 语法 作用:计算字符串中的单词数.大理石平规格 语法:str_word_count(string,return,char) 参数: 参数 描述 strin ...

  6. 关于富文本复制word,里面掺杂图片上传的问题

    图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM ...

  7. 20180826(05)- Java URL处理

    Java URL处理 URL(Uniform Resource Locator)中文名为统一资源定位符,有时也被俗称为网页地址.表示为互联网上的资源,如网页或者FTP地址. 本章节我们将介绍Java是 ...

  8. 20180708-Java修饰符

    public class className{ //...} private boolean myFlag;static final double weeks = 9.5;protected stat ...

  9. HDU 3605 Escape(二分图多重匹配问题)

    Escape Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  10. Mac定制终端:iTerm2 + zsh + powerline

    原始界面:   配置后的界面:   安装iTerm2 可以直接去官网下载:https://www.iterm2.com/ 下载后直接安装即可 安装主题 所有主题:https://iterm2color ...