在学习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. Java 异常处理流程

    Java 异常处理流程 ============== End

  2. JumpServer 跳板机系统

    Jumpserver项目为开源项目,截至到目前最新版本为4.0,4.0功能并不完整,无上传.下载功能,配置复杂.启动服务也较繁琐,推荐使用0.3.2版本,文档较全,安装简单文档链接https://gi ...

  3. django从零开始-模型

    1.设置统计表 配置models.py from django.db import models # Create your models here. # 发布会 class Event(models ...

  4. 【bfs】仙岛求药

    [题目描述] 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶.叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处.迷阵由M×N个方格组成,有的 ...

  5. nginx.conf(centos6, 1.12)主配置文件修改

    #nginx1.12 centos6.xuser admin admin;worker_processes 4; error_log /data/services/logs/nginx_error.l ...

  6. 【165223&165218】结对感想——论如何与队友完美配合

    ★ 为什么要结对编程? 一.结对编程的优势 搭档的形式 平等.互补 高效率.共分享 相互影响.督促学习 方便复审与反馈 二.结对编程的方式 互换的角色 相同的目的 结对编程中有两个角色: (a)驾驶员 ...

  7. Nginx简易编译安装

    1.下载Nginx: http://nginx.org/download/nginx-1.6.3.tar.gz 2.安装Pcre.Zlib.Openssl等相关组件: [root@track ngin ...

  8. Java 帝国之建造者模式

    Java 帝国之建造者模式 原创: 王钦誉 码农翻身 今天 本文来自王钦誉的投稿,老刘做了较大修改. 原文地址: https://xiaoqinyu0000.github.io/2018/06/11/ ...

  9. Nginx宣布正式支持gRPC,附示例代码

    原创 2018-03-20 薛命灯 聊聊架构 作者|Owen Garrett编辑|薛命灯 NGINX 官方博客正式宣布 NGINX 支持原生的 gPRC,现在就可以从代码仓库拉取快照版本.该特性将会被 ...

  10. POJ3734Blocks(递推+矩阵快速幂)

    题目链接:http://poj.org/problem?id=3734 题意:给出n个排成一列的方块,用红.蓝.绿.黄四种颜色给它们染色,求染成红.绿的方块个数同时为偶数的方案数模10007的值. 题 ...