MySQLdb与sqlalchemy的简单封装
一:MySQLdb
# !/usr/bin/python
# -*- coding: UTF-8 -*- import MySQLdb
import MySQLdb.cursors import configuration class DataAccess : conn = None
cursor = None
isClosed = True def open(self,host=configuration.host,port=configuration.port,db=configuration.db,user=configuration.user,pwd=configuration.pwd) : self.conn = MySQLdb.connect(host=configuration.host,port=configuration.port,db=configuration.db,user=configuration.user,passwd=configuration.pwd,charset="utf8")
self.cursor = self.conn.cursor()
self.isClosed = False def execute(self,cmd) :
if self.isClosed :
raise Exception("db is not opened!")
ret = self.cursor.execute(cmd)
return ret def queryList(self,cmd) :
if self.isClosed :
raise Exception("db is not opened!") self.cursor.execute(cmd)
rows = self.cursor.fetchall() return rows def commit(self):
self.conn.commit() def rolback(self):
self.conn.rolback() def close(self) :
if self.isClosed :
pass; self.conn.close();
self.isClosed=True;
二:sqlalchemy
# !/usr/bin/python
# -*- coding: UTF-8 -*- from sqlalchemy import *
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm import Session
from sqlalchemy.ext.declarative import declarative_base import configuration class Persister(object): session = None;
isClosed = True; def open(self,host=configuration.host,port=configuration.port,db=configuration.db,user=configuration.user,pwd=configuration.pwd) : url = 'mysql+mysqlconnector://%s:%s@%s:%d/%s' % (user,pwd,host,port,db)
engine = create_engine(url)
DbSession = sessionmaker(bind=engine) self.session = DbSession() self.isClosed = False return self.session def query(self,type) : query = self.session.query(type)
return query def add(self,item) :
self.session.add(item) def add_all(self,items) :
self.session.add_all(items) def delete(self,item) :
self.session.delete(item) def commit(self) :
self.session.commit() def close(self) : if self.isClosed :
pass self.session.close()
self.isClosed = True
三:测试代码
# !/usr/bin/python
# -*- coding: UTF-8 -*- from sqlalchemy import *
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm import Session
from sqlalchemy.ext.declarative import declarative_base from entity import *
from utils.SSH import *
from dao.persister import * from dao.dao import * persister = Persister()
persister.open()
query = persister.query(w_node)
nodes = query.filter(w_node.master==False).all() print len(nodes) dao = DataAccess()
dao.open() rows = dao.queryList("select * from w_node")
for row in rows :
print row[0],row[1],row[2],row[3],row[4] dao.close()
persister.close()
MySQLdb与sqlalchemy的简单封装的更多相关文章
- pymysql DAO简单封装
#!/usr/bin/env python # -*-coding:utf-8 -*- # # 无法执行多个query,self.conn.close()放在CdbConn类的单独函数中,每次quer ...
- Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池
前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...
- FMDB简单封装和使用
工具:火狐浏览器+SQLite Manager插件 ; Xcode; FMDB库; 效果: 项目地址: https://github.com/sven713/PackFMDB 主要参考这两篇博客: 1 ...
- Android--Retrofit+RxJava的简单封装(三)
1,继续接着上一篇的讲讲,话说如果像上一篇这样的话,那么我们每一次请求一个结构都要创建一堆的Retrofit对象,而且代码都是相同的,我们可以试试封装一下 先创建一个HttpMethods类,将Ret ...
- okhttp3 get post 简单封装
最近打算在新项目中使用 okhttp3, 简单封装了一下异步 get post 因为 CallBack 也是在子线程中执行,所以用到了 Handler public class MyOkHttpCli ...
- python网页请求urllib2模块简单封装代码
这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...
- 对pymysql的简单封装
#coding=utf-8 #!/usr/bin/python import pymysql class MYSQL: """ 对pymysql的简单封装 "& ...
- iOS开发——UI篇OC篇&UITableView简单封装
UITableView简单封装 UITableView时iOS开发中使用最多也是最重的一个UI空间,其实在App Store里面的%80以上的应用都用到了这个控件,所以就给大家介绍一下,前面的文章中也 ...
- iOS sqlite 增删改查 简单封装(基于 FMDB)
/** * 对 sqlite 的使用进行简单封装,仅涉及简单的单表 增删改查 * * 基于 FMDB * * 操作基于 model ,数据库表字段与 model 属性一一对应,对 model 整 ...
随机推荐
- skinned mesh render
[skinned mesh render] 相比MeshRender组件 ,SkinnedMeshRender多了bones组件.所以很明显,MeshRender不支持骨骼动画,而SkinnnedMe ...
- Python Flask Jinja2模板引擎
模板 简介 模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请 求的上下文中才能知道. 渲染 使用真实值替换变量,再返回最终得到的响应字符串,这一过程 称为渲染.为了渲染模 ...
- JavaScript中判断null、undefined与NaN的方法
1.判断undefined: ? 1 2 3 4 var tmp = undefined; if (typeof(tmp) == "undefined"){ alert(" ...
- 通过DataTable获得表的主键
转载http://www.cnblogs.com/hobe/archive/2005/10/07/249940.html 通过DataTable获得表的主键 很多情形下我们需要知道表的主键是什么.在A ...
- java 对一个字符串去重,即去掉字符串内重复元素
String str ="abc|efa|abc|efa|abc"; String str1 = str.replaceAll("(?s)(.)(?=.*\\1)&quo ...
- 承载地图的div如果隐藏再显示,则定位时会定位到页面左上角
承载地图的div如果隐藏再显示,则定位时会定位到页面左上角. 解决方法:不隐藏,改变div的高度.在div上利用z-index加一个新的不透明的div.
- Android Studio生成签名安装包(Generate Signed APK)
一 打开构建对话框. 二 创建新的密钥库(key store) 可以选择已创建的密钥库,也可以选择创建新的密钥库. 创建完成后,自动导入. 三 选择签名类型. 如果不选,会提示错误. 这里将新旧两种签 ...
- HA状态下防火墙损坏处理
问题描述: web登录防火墙管理地址,发现在 状态-系统信息 里集群成员只有一台原备机.到机房发现原主机只有power灯是亮着的,HA灯和status灯都不亮. 用笔记本直连防火墙的mgmt口不亮,c ...
- eclipse打war包编译文件不更新
如题.多次打包都不更新,各种clean都试了都不行.重启eclipse也不行.最后重启电脑可以了. 另外eclipse导出war包似乎存在bug,时间比系统时间超前,如下图所示.我17:19导出的包, ...
- Mapped Statements collection already contains value for*
检查了一下,没有重复的,参数也都正确,把报错的地方注释掉继续报下一个方法错误.重启也无效 最后发现,最后一个方法的返回值类型resultType="java.util.Map"写成 ...