在学习sqlalchemy操作中,最常见的就是如下的示例,一个文件基本上包含了数据库的增删改查。sqlalchemy的具体操作我就不再详细说明了。流程大概是:

  1. 定义表
  2. 创建数据库引擎
  3. 创建表
  4. 插入数据
  5. 查询数据
 #coding:utf-8

 from sqlalchemy import Column,String,create_engine,MetaData
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.dialects.mysql import INTEGER,CHAR Base = declarative_base() meta = MetaData() #定义User对象
class User(Base):
__tablename__ = 'user_one' id = Column(String(20),primary_key=True)
name = Column(String(20)) #初始数据库连接
engine = create_engine('mysql+mysqldb://root:123@localhost:3306/test') #创建DBsession
DBSession = sessionmaker(bind=engine) #创建session会话,数据库操作的基石。
session = DBSession() #在数据库中创建表user
User.metadata.create_all(bind=engine) #插入数据
new_user = User(id='',name='kiit') #提交数据到session
session.add(new_user) #提交到数据库
session.commit() #查询User表
user_data = session.query(User).all() #关闭session连接
session.close() #循环将返回的数据打印
for i in user_data:
print i.id,i.name

而在实际的生产环境中根本不可能使用一个文件完成数据的这么多的操作。数据库的操作大体分为:增、删、改、查 。那么就分为这四个部分去完成数据的操作

1、定义数据库

models.py

 #coding:utf-8

 from sqlalchemy import Column,CHAR,INTEGER
from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class User(Base):
__tablename__ = "user" id = Column(CHAR(20),primary_key = True)
name = Column(CHAR(20)) class Solary(Base):
__tablename__ = "solary" id = Column(INTEGER,primary_key = True)
name = Column(CHAR(20))
num = Column(CHAR(20))

2、创建数据库

sql_create.py

 #coding:utf-8

 from sqlalchemy import create_engine
from models import * engine = create_engine('mysql+mysqldb://root:123@localhost:3306/test') def create_table(table_name):
table_name.metadata.create_all(engine)
print "创建成功"

3、插入数据

sql_insert.py

 #coding:utf-8

 from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.dialects.mysql import INTEGER,CHAR
from sqlalchemy import create_engine,Column def insert(new_data): Base = declarative_base()
engine = create_engine('mysql+mysqldb://root:123@localhost:3306/test')
print "创建数据库引擎" DBSession = sessionmaker(bind=engine)
session = DBSession()
print "创建session对象" session.add(new_data)
print "添加数据到session" session.commit()
print "提交数据到数据库" session.close()
print "关闭数据库连接" if __name__ == "__main__":
insert(User)

4、查询数据

sql_select.py

 #coding:utf-8

 from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from models import * def select_fun(table_name):
engine = create_engine("mysql+mysqldb://root:123@localhost:3306/test")
print "初始化数据库引擎" DBSession = sessionmaker(bind=engine)
session = DBSession()
print "创建session对象" table_data = session.query(table_name).all()
print "查询" session.close() return table_data if __name__ == "__main__":
select_fun(User)

5、使用增,删,改函数

test.py

 #coding:utf-8

 from models import *
from sql_create import *
from sql_select import * create_table(Solary) new_user = User(id="8",name="miko") insert(new_user)
print "产生新的用户" data = select(User) for i in data:
print i.id,i.name

函数化操作的好处就是避免重复代码,并且能够解开耦合。想要查询数据库时不需要先定义table,想要删除数据库时不需要再创建引擎。以上代码经过多次测试,亲测可用。

sqlalchemy数据库分层操作的更多相关文章

  1. Flask学习笔记:数据库ORM操作MySQL+pymysql/mysql-python+SQLAlchemy/Flask-SQLAlchemy

    Python中使用sqlalchemy插件可以实现ORM(Object Relationship Mapping,模型关系映射)框架,而Flask中的flask-sqlalchemy其实就是在sqla ...

  2. 从C#到Objective-C,循序渐进学习苹果开发(7)--使用FMDB对Sqlite数据库进行操作

    本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本篇主要开始介绍基于XCod ...

  3. mysql数据库----python操作mysql ------pymysql和SQLAchemy

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy 一.pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQ ...

  4. Flask学习笔记:数据库迁移操作flask-script+alembic/flask-migrate

    数据库迁移是将代码中模型类(即表)的修改同步到数据库中, flask-sqlalchemy的模型类一旦使用create_all()映射到数据库中后,对这个模型类的修改(例如添加了一个新的字段)就不会再 ...

  5. python框架之Flask基础篇(二)-------- 数据库的操作

    1.flask连接数据库的四步: 倒入第三方数据库扩展包:from flask_sqlalchemy import SQLAlchemy 配置config属性,连接数据库: app.config[&q ...

  6. SQLAlchemy多表操作

    目录 SQLAlchemy多表操作 一对多 数据准备 具体操作 多对多 数据准备 操作 其它 SQLAlchemy多表操作 一对多 数据准备 models.py from sqlalchemy.ext ...

  7. php模拟数据库常用操作效果

    test.php <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); ...

  8. Android-Sqlite数据库的操作

    Sqlite数据库的简单操作: 设置增删改查的按钮,xml界面布局设置 <?xml version="1.0" encoding="utf-8"?> ...

  9. (四)SQL入门 数据库的操作与事务管理

    数据库的操作,有三个最基本的语句,insert插入,update修改,delete删除. 不同的数据库厂商的实现可能不同,所以就不说具体的语法怎么写的了.说语法也没有意义,到处都可以复制粘贴,记得听某 ...

随机推荐

  1. 常用 git 基础命令

    git config --global credential.helper store记住密码 git config user.name xxx配置帐号 git config user.email x ...

  2. Android 程序优化总结

    第一部分 编程规范 1.1 基本要求: 程序结构清晰,简单易懂,单个函数的程序行数不得超过100行. 打算干什么,要简单,直接. 尽量使用标准库函数和公共函数 不要随意定义全局变量,尽量使用局部变量. ...

  3. 【arc073f】Many Moves(动态规划,线段树)

    [arc073f]Many Moves(动态规划,线段树) 题面 atcoder 洛谷 题解 设\(f[i][j]\)表示第一个棋子在\(i\),第二个棋子在\(j\)的最小移动代价. 发现在一次移动 ...

  4. EasyFlash 的初始化配置

    @2019-02-18 [小记] EasyFlash的初始化流程 easyflash_init ---> ef_port_init ---> sfud_init ---> sfud_ ...

  5. centos7下mysql半同步复制原理安装测试详解

    原理简介: 在MySQL5.5之前,MySQL的复制其实都是异步复制(见下图),主库和从库的数据之间存在一定的延迟,这样存在一个隐患:当在主库上写入一个事务并提交成功,而从库尚未得到主库推送的BinL ...

  6. User Agent 用户代理

    User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本.CPU 类型.浏览器及版本.浏览器渲染引擎.浏览器语言.浏览器插件等. User A ...

  7. css 多行文本的溢出显示省略号(移动端)

    多行文本的溢出显示省略号(移动端) 一.单行文本的溢出显示省略号(通用) .mui-ellipsis { overflow: hidden; /*规定当文本溢出包含元素时发生的事情*/ white-s ...

  8. react-native中的state

    我们使用两种数据来控制一个组件:props和state.props是在父组件中指定, 而且一经指定,在被指定的组件的生命周期中则不再改变. 对于需要改变的数据,我们需要使用state. 假如我们需要制 ...

  9. 安装Nginx配置常用参数含义

    --prefix #nginx安装目录,默认在/usr/local/nginx--pid-path #pid问件位置,默认在logs目录--lock-path #lock问件位置,默认在logs目录- ...

  10. try语句的使用

    C语言里try是一个语句或函数.其作用是是抛出错误用. 将有可能产生错误的语句括在一起,放入try语句块.如果在try语句块中发生异常,FlashPlayer会创建一个错误对象,并将该Error对象派 ...