04:sqlalchemy操作数据库 不错
目录:
- 1.1 ORM介绍(作用:不用原生SQL语句对数据库操作)
- 1.2 安装sqlalchemy并创建表
- 1.3 使用sqlalchemy对表基本操作
- 1.4 一对多外键关联
- 1.5 sqlalchemy多对多关联
1.1 ORM介绍(作用:不用原生SQL语句对数据库操作)返回顶部
1、什么是orm(orm是一种术语而不是软件)
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.4 一对多外键关联返回顶部
1.5 sqlalchemy多对多关联返回顶部
1.6 sqlalchemy执行原生SQL语句
1、执行原生SQL语句
2、找到当前数据库中所有非空表
04:sqlalchemy操作数据库 不错的更多相关文章
- Python3.x:SQLAlchemy操作数据库
Python3.x:SQLAlchemy操作数据库 前言 SQLAlchemy是一个ORM框架(Object Rational Mapping,对象关系映射),它可以帮助我们更加优雅.更加高效的实现数 ...
- 04:sqlalchemy操作数据库
目录: 1.1 ORM介绍(作用:不用原生SQL语句对数据库操作) 1.2 安装sqlalchemy并创建表 1.3 使用sqlalchemy对表基本操作 1.4 一对多外键关联 1.5 sqlalc ...
- python如何用sqlalchemy操作数据库
工具:mysql python sqlalchemy ---------------------------------------- 准备工作: 1.安装mysql 如果是window环境请参考 ...
- SQLAlchemy 操作数据库
首先安装 SQLAlchemy install PyMySQL install sqlalchemy 代码: #!/usr/bin/env python # encoding: utf-8 " ...
- sqlalchemy操作数据库(二)
sqlalchemy的基本操作 表结构如下: from sqlalchemy import create_enginefrom sqlalchemy.ext.declarative importdec ...
- python 连接操作数据库(二)
一.我们接着上期的博客继续对ORM框架进行补充,顺便把paramiko模块也给大家讲解一下: 1.ORM框架: 在连接操作数据库的第一个博客中也已经说了,sqlalchemy是一个ORM框架,总结就是 ...
- 第二百八十九节,MySQL数据库-ORM之sqlalchemy模块操作数据库
MySQL数据库-ORM之sqlalchemy模块操作数据库 sqlalchemy第三方模块 sqlalchemysqlalchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API ...
- 13、Flask实战第13天:SQLAlchemy操作MySQL数据库
安装MySQL 在MySQL官网下载win版MySQL 双击运行 后面根据提示设置密码然后启动即可,这里我设置的密码是:123456 我们可以通过Navicat客户端工具连接上MySQL addres ...
- 【tips】ORM - SQLAlchemy操作MySQL数据库
优先(官方文档SQLAlchemy-version1.2): sqlalchemy | 作者:斯芬克斯 推荐一(长篇幅version1.2.0b3):python约会之ORM-sqlalchemy | ...
随机推荐
- LeetCode——Find All Numbers Disappeared in an Array
LeetCode--Find All Numbers Disappeared in an Array Question Given an array of integers where 1 ≤ a[i ...
- skynet 创建存储过程脚本
最近主程更改了数据库的操作方案,由之前的拼写sql脚本转为在mysql端创建好存储过程后,直接调用存储过程. 首先对一个表测试上述过程: 数据库端存储过程:(测试表) CREATE TABLE `ra ...
- Image合并添加文字内容
场景:将一个头像.二维码.文字信息添加到一张背景图片中,将这些信息合成一张图片. 代码已经测试验证.代码中图片自己随意找几张测试即可. 代码: import com.sun.image.codec.j ...
- 报错Mapped Statements collection does not contain value for com.atguigu.mybatis.dao.EmployeeMapperPlus
报错Mapped Statements collection does not contain value for com.atguigu.mybatis.dao.EmployeeMapperPlus ...
- WPF中的事件列表 .
以下是WPF中的常见事件汇总表(按字母排序),翻译不见得准确,但希望对你有用. 事件 描述 Annotation.AnchorChanged 新增.移除或修改 Anchor 元素时发生. Annota ...
- python函数语法学习
Python函数 定义函数 在Python中,定义一个函数用def语句,一次写出函数名.括号中的参数和冒号:,函数返回使用return语句. def myDef(x): if x >= 0: r ...
- Win7 x64安装Paramiko
先说一下我的环境: win7 x64 旗舰版.Python3.5.0.pip8.1.0 pip install paramiko时报错如下: 大概意思: blablabla... 反正大概意思就是少G ...
- python基础之多线程与多进程(二)
上课笔记整理: 守护线程的作用,起到监听的作用 一个函数连接数据库 一个做守护线程,监听日志 两个线程同时取一个数据 线程---->线程安全---->线程同时进行操作数据. IO操作--- ...
- TCPL学习毕节:第六章hash表
对于P126的哈希表构成: struct nlist *install(char *name, char *defn) { struct nlist *np; unsigned hashval; if ...
- 原创:Angular + controllerAs + CoffeeScript的一个问题,及其解决方案
config是一个待注入的value,它的值是{count: 1} 看代码(用普通函数的写法): $routeProvider.when '/test', template: "Hello ...