老师的博客: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. SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试

    1. 背景 SQL Server 搭建AlwaysOn后,我们就希望程序连接时使用虚拟的侦听IP(Listener IP),而不再是主Server 的IP.如果我们有采用中间件,则可以在配置中,直接用 ...

  2. 关于bootstrap报错

    在使用bootstrap报错.报错的位置如下 if("undefined"==typeof jQuery)throw new Error("Bootstrap's Jav ...

  3. 【English】20190429

    detect发现 [dɪˈtekt] charger充电器 [ˈtʃɑːrdʒər] unable to detect charger

  4. NPOI插入图片到excel指定单元格

    先看效果图 下载NPOI组件(2.0以上支持.xlsx和.xls的excel,2.0以下只支持.xls) NPOI下载官网http://npoi.codeplex.com 下载解压,里面有个dotne ...

  5. Mysql8 安装过程及安装过程系列问题记录

    前言: 今天,想装个高版本一点的mysql试试,于是下载了一个mysql8的zip版本. 地址:https://dev.mysql.com/downloads/file/?id=484900 没想到安 ...

  6. 超好用的C#控制台应用模板

    本文是Wei的公众号投稿文章: 默认模板之缺 在工作学习中,我们经常需要创建一些简单的控制台应用(Console App)去验证某个想法,或者作为小工具交付给其他同事. 通常我们的选择是 Visual ...

  7. 又双叒叕换,微软这次换Edge了

    http://tech.sina.com.cn/it/2018-12-06/doc-ihmutuec6481129.shtml 其实两个月前跟一个微软的前同事聊天已经听说过微软要基于Chromiun来 ...

  8. MySQL 中 update 修改数据与原数据相同会再次执行吗?

    阅读本文大概需要 2.8 分钟. 作者:powdba 来源:阿里云栖社区 一.背景 本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执 ...

  9. C#多线程之旅~上车吧?

    前言:前几天,写了一篇关于多线程使用的文章,[线程使用]用法得到不少博友的好评,博主这几天加班写文章,把剩下的高级使用给写完,期望可以得到博友的追赞吧,那么废话不多说,开始我们的C#高级用法之旅!! ...

  10. Sql Server 的参数化查询

    为什么要使用参数化查询呢?参数化查询写起来看起来都麻烦,还不如用拼接sql语句来的方便快捷.当然,拼接sql语句执行查询虽然看起来方便简洁,其实不然.远没有参数化查询来的安全和快捷. 今天刚好了解了一 ...