目录:

1.1 ORM介绍(作用:不用原生SQL语句对数据库操作)返回顶部

  1、什么是ormorm是一种术语而不是软件)

      1)orm英文全称object relational mapping,就是对象映射关系程序
      2)简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的
      3)为了保证一致的使用习惯,通过orm将编程语言的对象模型和数据库的关系模型建立映射关系
      4)这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了,
           而不用直接使用sql语言

  2、ORM作用
      1)隐藏了数据访问细节,“封闭”的通用数据库交互,ORM的核心。他使得我们的通用数据库交互变得简单
           易行,并且完全不用考虑该死的SQL语句。快速开发,由此而来
      2)ORM使我们构造固化数据结构变得简单易行。

  3、ORM缺点
      1)无可避免的,自动化意味着映射和关联管理,代价是牺牲性能
      2)现在的各种ORM框架都在尝试使用各种方法来减轻这块(LazyLoad,Cache),效果还是很显著的。

1.2 安装sqlalchemy并创建表返回顶部

   1、在win10中直接用pip3安装即可

      pip3 install sqlalchemy

  2、sqlalchemy可以支持多种数据库的连接使用:下面是常用的几种

      MySQL-Python
          mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>

      pymysql
          mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]

      MySQL-Connector
          mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname>

      cx_Oracle
          oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]

      更多详见: http://docs.sqlalchemy.org/en/latest/dialects/index.html

  3、sqlalchemy说明

      1) sqlalchemy的底层还是对mysqldb, pymysql的封装
      2) 我们不用写原生SQL了,但是sqlalchemy执行的时候还是要用原生SQL
      3) Sqlalchemy就是通过使用mysqldb, pymysql等来执行原生SQL语句

  4、创建表

    1. 使用原生sql创建表

        CREATE TABLE user (
          id INTEGER NOT NULL AUTO_INCREMENT, 
          name VARCHAR(32), 
          password VARCHAR(64), 
          PRIMARY KEY (id)
        )

    2. 使用sqlalchemy创建表的两种方法

 法1:使用sqlalchemy创建表(不常用)
 法2:使用sqlalchemy创建表(常用方法)
#! -*- coding:utf8 -*-
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker '''第一步:连接数据库'''
engine = create_engine("mysql+pymysql://root:1@127.0.0.1/bsp?charset=utf8")
# engine = create_engine("mysql+pymysql://root:1@127.0.0.1/tomdb",encoding='utf-8', echo=True) '''附加: 无论是增删改查都要先创建与数据库的会话session class'''
#创建与数据库的会话session class ,注意,这里返回给session的是个class类,不是实例
Session_class = sessionmaker(bind=engine) #创建用于数据库session的类
session = Session_class() #这里才是生成session实例可以理解为cursor '''第二步:操作数据库'''
#1、查看mysql中有哪些数据库
dbs=session.execute('show databases;').fetchall() #2、切换当前数据库
session.execute('use bsp;') #3、查询时过滤出第一条
row1=session.execute('select * from relations_department where Id>1;').first()
fid_id = row1.fid_id #4、一对多关联查询: 根据上面查询的父部门id 可以找到父部门信息
row2=session.execute('select * from relations_department where Id=%s;'%fid_id).first()
print row2.name # 政府事业部

1.3 使用sqlalchemy对表基本操作返回顶部

 1、连接mysql
 2、创建表结构
 3、创建与数据库的会话:增删改查都要用这个会话
 4、
 5、删
 6、改
 7、简单查找
 8、高级查找
 9、分组
 10、回滚

1.4 一对多外键关联返回顶部

 models.py 需要实现一对多联级删除时需要添加参数
 models.py 创建一对多表结构
 1、增:向对多表中插入数据
 2、查:一对多正向反向查找
 3、改
 4、删:联级需要在创建表时添加参数

1.5 sqlalchemy多对多关联返回顶部

 法1:models.py 自己定义第三张表
 1、增
 2、查:多对多正向发现查找
 3、改
 4、删

1.6 sqlalchemy执行原生SQL语句

  1、执行原生SQL语句

 python执行原生SQL

  2、找到当前数据库中所有非空表

 找到数据库中所有非空表

最新文章

  1. JavaEE学习文章汇总-并发,集群,分布式
  2. 【Android】命令行jarsigner签字和解决找不到证书链错误
  3. 反射+泛型+缓存 ASP.NET的数据层通用类
  4. VC远控(一)界面设计及套接字连接测试
  5. ms-grid layout
  6. AMD:浏览器中的模块规范
  7. MYSQL 数学运算符问题
  8. Data Structure(2)
  9. 创建简单的响应式HTML5模版
  10. Node.js学习 - Route
  11. 3-15 JS基础知识02
  12. 中文颜色名称与RGB颜色对照表
  13. Linux--慕课学习
  14. npm -g -D -s的区别
  15. linux用户和权限详解
  16. java 对CSV 文件的读取与生成
  17. springboot之assembly的文件配置
  18. C++设计模式(转)
  19. Scrum Meeting 8 -2014.11.14
  20. React-Router 动画 Animation

热门文章

  1. tinyxml优化之一
  2. Oracle 伪列
  3. 【P3355】骑士共存问题(最大流+黑白染色,洛谷)
  4. Mysql导出数据结构 or 数据
  5. windows系统下载地址大全&amp;大白菜下载和教程
  6. Codeforces 9C Hexadecimal&#39;s Numbers - 有技巧的枚举
  7. 使用IDEA将代码托管到GitHub步骤和错误解决
  8. Entity Framework 6 预热、启动优化
  9. 利用$http获取在服务器的json数据
  10. unity 使用MVC模式