环境:python3.7,pycharm,mysql

ORM(Object-Relational-Mapper)

对象关系映射(ORM)是一种允许您使用面向对象的范例从数据库查询和操作数据的技术,sqlalchemy是实现ORM技术其中一个库(框架)。

优势

  • 简化开发,因为它可以自动执行对象到表和表到对象的转换,从而降低开发和维护成本
  • 与嵌入式SQL和手写存储过程相比,代码更少
  • 应用程序层中的透明对象缓存,提高了系统性能
  • 优化的解决方案使应用程序更快,更易于维护

映射类型

sqlalchemy操作mysql数据库

1.导入
  1. import sqlalchemy
  2. from sqlalchemy.ext.declarative import declarative_base
2.链接数据库
  1. db = sqlalchemy.create_engine("mysql+pymysql://root:11111111@localhost/demo")
3.创建一个继承基类
  1. base = declarative_base(db)
4.映射
  1. class User(base):
  2. __tablename__ = 'student'
  3. id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
  4. name = sqlalchemy.Column(sqlalchemy.String(32))
5.创建表
  1. if __name__ == '__main__':
  2. base.metadata.create_all(db)
6.操作数据库
  1. 1.导入
  2. from sqlalchemy.orm import sessionmaker
  3. 2.绑定一个查询实例
  4. session = sessionmaker(bind=db)
  5. session = session()
  6. 3.插入
  7. ######插入单条数据
  8. user =User(
  9. id = 4,
  10. name='python'
  11. )
  12. session.add(user)
  13. session.commit()
  14. ######插入多条数据
  15. session.add_all(
  16. [
  17. User(id=5,name='java'),
  18. User(id=6,name='php')
  19. ]
  20. )
  21. session.commit()
  22. 4.查询
  23. ######查询多条数据
  24. data = session.query(User).all()
  25. for x in data:
  26. print (x.name)
  27. data = session.query(User).filter(User.name== 'xxxx').all()
  28. ######查询单条数据
  29. data = session.query(User).filter(User.name == 'xxxx').first()
  30. data = session.query(User).filter_by(name='xxxx').first()
  31. ######使用get查询id
  32. data = session.query(User).get(ident = 10)
  33. print (data.name)
  34. 5.修改
  35. data = session.query(User).get(10)
  36. print (data)
  37. data.name = 'laoli'
  38. session.merge(data)
  39. session.commit()
  40. 或者
  41. session.query(User).filter(User.id == 10).update({User.name:"xxxxx",User.id:11})
  42. session.commit()
  43. 6.删除
  44. data = session.query(User).filter(User.id == 11).first()
  45. session.delete(data)
  46. session.commit()

sqlalchemy相关操作(ORM)的更多相关文章

  1. Django框架详细介绍---ORM相关操作

    Django ORM相关操作 官方文档: https://docs.djangoproject.com/en/2.0/ref/models/querysets/ 1.必须掌握的十三个方法 <1& ...

  2. Django ORM那些相关操作zi

    Django ORM那些相关操作   一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果 <2> filter(**kwargs) ...

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

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

  4. Django ORM 那些相关操作

    Django ORM 那些相关操作 一般操作 必知必会13条 <> all(): #查询所有的结果 <> filter(**kwargs) # 它包含了与所给筛选条件相匹配的对 ...

  5. 6月20日 Django中ORM介绍和字段、字段参数、相关操作

    一.Django中ORM介绍和字段及字段参数 二.Django ORM 常用字段和参数 三.Django ORM执行原生SQL.在Python脚本中调用Django环境.Django终端打印SQL语句 ...

  6. Django框架之ORM的相关操作(一)

    一.一般操作 from django.db import models import datetime # Create your models here. class Author(models.M ...

  7. SQLAlchemy常用操作

    Models 只是配置和使用比较简单,因为他是Django自带的ORM框架,也正是因为是Django原生的,所以兼容性远远不如SQLAlchemy 真正算得上全面的ORM框架必然是我们的SQLAlch ...

  8. Python3+SQLAlchemy+Sqlite3实现ORM教程

    一.安装 Sqlite3是Python3标准库不需要另外安装,只需要安装SQLAlchemy即可.本文sqlalchemy版本为1.2.12 pip install sqlalchemy 二.ORM操 ...

  9. 1122 django属性操作orm字段数据操作

    目录 1. 静态文件的配置 手动静态文件的访问资源 静态文件的动态绑定 2.request方法 2.1 请求方式 2.2 获取前端的请求方式 request.method 2.3 request方法 ...

随机推荐

  1. 0629 Flink Meetup 北京站 PPT下载

    工程实用问题解决方案介绍,实用

  2. VIJOS-P1232 核电站问题

    VIJOS-P1232 核电站问题 JDOJ 1373 https://neooj.com/oldoj/problem.php?id=1373 题目描述         一个核电站有N个放核物质的坑, ...

  3. tornado之获取参数

    self.write()  # 返回字符串 self.redirect()  # 重定向 self.render()  # 返回html页面 一. 获取url中携带的参数, 如: 127.0.0.1: ...

  4. Educational Codeforces Round 57 (Rated for Div. 2) D dp

    https://codeforces.com/contest/1096/problem/D 题意 给一个串s,删掉一个字符的代价为a[i],问使得s的子串不含"hard"的最小代价 ...

  5. [NOIP2015]运输计划 线段树or差分二分

    目录 [NOIP2015]运输计划 链接 思路1 暴力数据结构 思路2 二分树上差分 总的 代码1 代码2 [NOIP2015]运输计划 链接 luogu 好久没写博客了,水一篇波. 思路1 暴力数据 ...

  6. Linux性能优化实战学习笔记:第十七讲

    一.缓存命中率 1.引子 1.我们想利用缓存来提升程序的运行效率,应该怎么评估这个效果呢? 用衡量缓存好坏的指标 2.有没有哪个指标可以衡量缓存使用的好坏呢? 缓存命中率 3.什么是缓存命中率? 所谓 ...

  7. oracle--报错 ORA-00257

    [oracle@oracle01 ~]$ rman target/ RMAN-: =========================================================== ...

  8. [比赛题解]CWOI2019-1

    [比赛题解]CWOI2019-1 比赛日期:2019.10.12 T1 一道神仙DP题. 我们考虑\(dp[i][j][k]\)表示最后\(i\)位数,\(i-1\)位都是9,最后一位为\(j\),最 ...

  9. 【操作系统之十五】iptables黑白名单、自定义链、网络防火墙、常用动作

    1.黑白名单当链的默认策略为ACCEPT时,链中的规则对应的动作应该为DROP或者REJECT,表示只有匹配到规则的报文才会被拒绝,没有被规则匹配到的报文都会被默认接受,这就是"黑名单&qu ...

  10. 代码实现一个蛇形led走马灯

    什么叫走马灯? 走马灯又叫流水灯,灯不断的走动,像流水一样,动态显示. makecode图形化编程见:http://bbs.kittenbot.cn/forum.php?mod=viewthread& ...