老师的博客:http://www.cnblogs.com/wupeiqi/articles/5713330.html

有一篇习详细的博客: http://www.keakon.net/2012/12/03/SQLAlchemy%E4%BD%BF%E7%94%A8%E7%BB%8F%E9%AA%8C

SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。

安装:pip3 install SQLAlchemy

导入常用的模块

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Index,CHAR,VARCHAR
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy import create_engine

连接

连接数据库的用engine,不同的数据库和不同的连接模块的连接的写法不一样,我们用的是mysql和pymysql具体见下表:

MySQL-Python
mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname> pymysql
mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
例如:engine = create_engine("mysql+pymysql://root:@localhost/review60?charset=utf8", max_overflow=5) # 表示最大连接数
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

创建列表

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Index,CHAR,VARCHAR
#string是char,varchar的集合
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy import create_engine
# 创建父类
Base=declarative_base()
# 创建表单
class User_Type(Base):
__tablename__='usertype' # 表的名称
id = Column(Integer,primary_key=True,autoincrement=True)#主键加自增
title = Column(CHAR(20), nullable=True, index=True)
class User(Base):
__tablename__='user'
id = Column(Integer , primary_key=True,autoincrement=True)
name=Column(CHAR,nullable=False,index=True)
email = Column(CHAR,nullable=False, unique=True)
user_type_id = Column(Integer, ForeignKey('usertype.id'))#表名和列名 外键 __table_args__ = (
UniqueConstraint('id', 'name', name='uix_id_name'),#联合索引的名字
Index('ix_id_name', 'name', 'email'),#第一个是索引的名字
)
engine = create_engine("mysql+pymysql://root:@localhost:3306/review60?charset=utf8", max_overflow=5) # 表示最大连接数
Base.metadata.create_all(engine) #连接数据库,并且把所有的类当做列表创建的mysql里面

删除表

engine = create_engine("mysql+pymysql://root:@localhost:3306/review60?charset=utf8", max_overflow=5)  # 表示最大连接数
Base.metadata.create_all(engine) #连接数据库,并且把所有的类当做列表删除

一般由于创建和删除在函数中表少用,所以我们一般他给分装起来。要用的话直接调用就好。

# 创建表
def create_table():
engine = create_engine("mysql+pymysql://root:@localhost:3306/review60?charset=utf8", max_overflow=5) # 表示最大连接数
Base.metadata.create_all(engine) #连接数据库,并且把所有的类当做列表创建的mysql里面
# 删除表
def drop_table():
engine = create_engine("mysql+pymysql://root:@localhost:3306/review60?charset=utf8", max_overflow=5) # 表示最大连接数
Base.metadata.drop_all(engine)

列表的操作

engine = create_engine("mysql+pymysql://root:@localhost:3306/review60?charset=utf8", max_overflow=5)
Session=sessionmaker(bind=engine) #绑定,创建会议
session=Session()#我去,在sessionmaker里面的call方法返回得是个是个类,所以下面可以调用方法
# 增
obj=User_Type(title='普通用户')
session.add(obj)
obj=User_Type(title='白金用户')
session.add(obj)
obj=User_Type(title='铂金用户')
session.add(obj) # 查
a=session.query(User_Type).all() #查询所有
for row in a :
print(row.id,row.title)
b=session.query(User.name,User.id,User.email).filter(User.id > 0).all(); #按条件筛选
for i1,i2,i3 in b :
print(i1,i2,i3)
c=session.query(User.name,User.id,User.email).filter(User.id > 0).first();#按条件筛选且只选一个
print(c) #由于只有一个直接得到列表
# 改
session.query(User_Type).filter(User_Type.title=='白金用户').update({'title':'黑铁用户'})
session.query(User_Type).filter(User_Type.title=='黑铁用户').update({User_Type.title:'黄金用户'})
session.query(User_Type).filter(User_Type.title=='黄金用户').update({'title':User_Type.title + "哈哈"}, synchronize_session=False)
session.query(User).filter(User.email=='').update({User.id:User.id+99999},synchronize_session='evaluate') # 删除
session.query(User).filter(User.id > 2).delete() session.commit()
session.close()

。  

SQLAchemy模块的更多相关文章

  1. python运维开发(十二)----rabbitMQ、pymysql、SQLAlchemy

    内容目录: rabbitMQ python操作mysql,pymysql模块 Python ORM框架,SQLAchemy模块 Paramiko 其他with上下文切换 rabbitMQ Rabbit ...

  2. 第五篇 Flask组件之SQLAchemy及Flask-SQLAlchemy插件/Flask-Script/Flask-migrate/pipreqs模块

    SQLAlchemy组件 一. 介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然 ...

  3. Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  4. Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)

    本节内容 1.数据库介绍 2.mysql管理 3.mysql数据类型 4.常用mysql命令 创建数据库 外键 增删改查表 5.事务 6.索引 7.python 操作mysql 8.ORM sqlac ...

  5. Python自动化运维之18、Python操作 MySQL、pymysql、SQLAchemy

    一.MySQL 1.概述 什么是数据库 ? 答:数据的仓库,和Excel表中的行和列是差不多的,只是有各种约束和不同数据类型的表格 什么是 MySQL.Oracle.SQLite.Access.MS ...

  6. python/SQLAchemy

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

  7. Python操作SQLAchemy

    如果对代码不懂就看这个:http://www.cnblogs.com/jixuege-1/p/6272888.html 本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql O ...

  8. ORM框架之SQLAchemy

    SQLAchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,即:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果. 1.安装 ...

  9. ORM sqlachemy

    本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 1. ORM介绍 orm英文全称object relational mapping ...

随机推荐

  1. 1. [mmc subsystem] 概念与框架

    一.概念 1.mmc的概念 mmc有很多种意义,具体如下: mmc MultiMedia Card,多媒体存储卡, 但后续泛指一个接口协定(一种卡式),能符合这接口的内存器都可称作mmc储存体. 主要 ...

  2. 第一周Python学习笔记

    Python 基本语法: ①  Python程序的格式:1.用代码高亮来标识函数丶语句等等 本身的代码高亮并没有实际的意义,只是用来辅助编程人员和阅读人员 更好的识别 2.程序以缩进来标识语句,缩进用 ...

  3. pytest框架之命令行参数1

    前言 pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作.pytest提供了丰富的功能,包括assert重写,第三方插件,以及其他测试工具无法比拟的fixtur ...

  4. 迷茫<第四篇:这两年>

    时间匆匆而过,不知不觉已经是到北京的第二个年头,又到年末,2017年接近了尾声,提前预祝各位看官元旦节快乐! 今年3月份跳槽了一次,4月份以高级开发工程师职位进来现在的公司一直工作到现在,没有以前那么 ...

  5. SQL 高级查询(层次化查询,递归)

    SQL 高级查询 前面我们写了一下 SQL 的极简入门,今天来说点高级查询.没看到的朋友可以点击下面链接查看. 1 小时 SQL 极速入门(一) 1 小时 SQL 极速入门(二) 1 小时 SQL 极 ...

  6. Asp.NetCore依赖注入和管道方式的异常处理及日志记录

    前言     在业务系统,异常处理是所有开发人员必须面对的问题,在一定程度上,异常处理的能力反映出开发者对业务的驾驭水平:本章将着重介绍如何在 WebApi 程序中对异常进行捕获,然后利用 Nlog ...

  7. DS控件库 Win7链接列表框效果1:右侧箭头

    Win7链接列表框是仿Windos7开始菜单项开发的控件,同样支持右侧箭头,由于使用场合的不同,本控件中右键箭头不作为菜单扩展,而是通过事件触发式响应. 先上图 代码很简单,点击对右侧箭头区域点击的响 ...

  8. 【转载】 Sqlserver限制最大占用内存

    在Sqlserver数据库管理软件中,Sqlserver对系统内存的管理原则是:按需分配,并且分配完成后为了查询有更好的性能,并不会立即自动释放内存,数据取出后,还会一直占用着内存,所以在Sqlser ...

  9. 阿里、百度等多家公司Java面试记录与总结

    算算自己大概面试了近十家公司,也拿到了几个Offer,现在面试告一段落,简单总结下面试经验. 我现在主要的方向是Java服务端开发,把遇到的问题和大家分享一下,也谈谈关于技术人员如何有方向的提高自己, ...

  10. javascript 函数后面有多个小括号f( )( )( )...

    有时我们看见js函数后面跟着多个小括号是什么意思?f( )( )( )... f()执行f函数,返回子函数 f()()执行子函数,返回孙函数 f()()()执行孙函数,返回重孙函数 ... ... 但 ...