adodbapi orm对象查询(一)

Python例程:使用adodbapi访问MSSQL数据库 今天学习用Python访问数据库,以前用ADO习惯了,所以先找个封装了ADO的模块来试试。adodbapi是用python封装ADO的数据库访问模块,adodbapi接口完全符合Python DB-API2.0规范,简单易用。以下是自己学习过程中写的一个例程,使用了查询、建表、插入数据、执行存储过程等功能,基本上涵盖了日常数据库编程所需的功能。#coding=utf-8import ado 阅读详情

转载注明出处 http://blog.youkuaiyun.com/xugangjava/article/details/7565321

由于项目中需要用到adodbapi,看过一些orm感觉和twisted的 PB兼容性都不是很好,

主要问题是,PB的 Jelly模块无法解析orm内部的一些类型,只有自己造轮子,写个简易的ORM,来简化代码

(最近时间比较紧,有不对的地方欢迎大家拍砖大笑)

1.adodbapi查询出来对象格式化成对象,python可以根据字典来 初始化自身的属性

所以我们的Row对象

#data row
class Row(pb.Copyable):
	def __init__(self,entries): 
		self.__dict__.update(entries)

在写个跟dataset类似的东西,如下

class ResultObj(pb.Copyable):
	#字符串太长pb无法 传输,转成列表,原理跟FilePager一样
	def __init__(self,rs,PageNo=1,pageSize=300,filedDict=None):
		self.pageSize=pageSize	
		if rs.RecordCount:
			rs.AbsolutePage=PageNo
		self.pageNo=PageNo 
		rs.PageSize=self.pageSize
		self.pageCount=rs.PageCount
		if rs.RecordCount:
			self.rs=rs.GetRows(self.pageSize)
		self.field_num=rs.Fields.Count
		self.next=None
		self.count=self.pageSize

		if self.pageNo<self.pageCount:
			self.next=ResultObj(rs,PageNo+1,self.pageSize,filedDict)
		else:
			self.count=rs.RecordCount-(self.pageNo-1)*self.pageSize
		#查询结果的每一列 生成字典
		if filedDict is None:
			self.filedDict={}
			for n in xrange(self.field_num):
				self.filedDict[n]=rs.Fields.Item(n).Name.lower()
				#没有列明转成 c0 c1.....
				if not self.filedDict[n]:
					self.filedDict[n]='c'+str(n)
		else:
			self.filedDict=filedDict

	def __len__(self):
		return self.count

	def __getitem__(self,key):       	
		row={}
		for cur_col in xrange(self.field_num):
			row[self.filedDict[cur_col]]=self.rs[cur_col][key]
		return Row(row)					
		
	def __iter__(self):
		return iter(self.__next__())
	
	#遍历列表
	def __next__(self):
		fiedlcount=xrange(self.field_num)
		while self:
			for cur_row in xrange(self.count):
				row={}
				for cur_col in fiedlcount:
					row[self.filedDict[cur_col]]=self.rs[cur_col][cur_row]
				yield Row(row)					
			self=self.next

OK我们来查询对象了

def queryObj(conn,sql,*args):
	cur=conn.cursor()
	cur.execute(sql,args)
	return ResultObj(cur.rs)

这样我们现在可以这样来查询对象了,在下一篇文章中,将使用 下面第二行的函数来进一步简化我们的SQL

#1.
print queryObj(conn,'select username from users where uid=1').username
#输出 admin
#2.
print select(conn,'username','Users',uid=1)[0].username



使用Python连接PowerBI数据集 26黑夜终究过去,黎明终将到来前面在介绍过当PowerBI遇到了Python会擦出怎样的火花,那么今天就来介绍下使用Python来连接PowerBI数据集。adodbapi库首先安装这个库pip install adodbapi连接工作区中数据如果是高级容量工作区,则可以通过直接连接线上工作区中的数据集,数据集的连接字符串获取方式可参考PowerBI数据集单表刷新(一),这里还有点要注意,连接方式中并没有指定账号信息,运行代码时会弹框让填写账号和密码。连接本地文件使用dax studio来获取报表文件的连接 阅读详情

相关推荐

Python之美[从菜鸟到高手]--urllib源码分析

urllib提供了较好的封装,可以很方便的读取http,ftp,file等协议数据,本篇只关注http。urllib的底层还是使用httplib模块,相比于httplib,urllib接口更加好用,功能更加强大。支持http代理,可从环境变量中获取代理信息,支持http basic auth,可自动处理302等。但也有不足,如不支持gzip等压缩编码,不支持摘要认证,NTML认证等。

Skycrab 1万+

使用Python操作MSSQL数据库.

有时想更新或迁移部分SqlServer数据,用SQL只会整几句select,高级点的连个游标都玩不转有木有?拿起VS写个小程序不停的改又编译很烦,有木有? 想用脚本写了有木有? 本文介绍使用python,adodbapi操作数据库: adodbapi 库 python 可以操作mssqlserver的类库有几个,支持python3.x的目前没几个靠谱的.adodbapi是使用ADO...

weixin_30347335的博客 229

Python中的ORM框架:Pony ORM详解

它提供了高性能的查询功能和灵活的数据模型定义,使开发者能够快速构建复杂的数据库应用程序。Pony ORM是一个简单而强大的ORM框架,它提供了强大的查询功能和灵活的数据模型定义。它的设计目标是提供高性能和易用性,使开发者能够快速构建复杂的数据库应用程序。一旦建立了数据库连接和定义了数据模型,就可以使用Pony ORM执行查询操作了。在上面的示例中,我们使用了SQLite数据库,并指定了一个名为"database.sqlite"的文件作为数据库文件。在使用Pony ORM之前,需要建立与数据库的连接。

KkowServer的博客 791

Python例程:使用adodbapi存取二进制数据

昨天尝试了adodbapi的常用操作,今天写一个存取二进制图片的程序试试,ado里面存取二进制数据还是要稍复杂点,不知道adodbapi表现又怎么样。例程功能:1. 新建一个测试表,用于存储图片数据2. 读取源图片数据,插入一条记录到测试表3. 读取新插入的表记录,将二进制字段数据写入到目标文件4. 直接打开目标图片文件,看看内容是否与源图片一致  1#codi

iLdf的专栏 1906

python_package.rar

setuptools-1.3.win-amd64-py2.7.exe adodbapi-2.6.0.7.zip Django-1.4.22.tar.gz django-ajax-forms-django-ajax-forms-0.1.1.zip django-ajax-selects-1.4.1.tar.gz django-appconf-1.0.1.tar.gz django-classy-tags-0.7.0.zip django-cms-3.2.0.tar.gz django-cms-3.2.0.zip django-formtools-1.0.zip django-model-utils-2.4.tar.gz django-mssql-1.3.1.zip django-photologue-django-photologue-2.4.zip django-pylibmc-0.6.0.tar.gz django-rosetta-0.6.0.tar.zip django-sekizai-0.9.0.zip django-sortedm2m-1.1.1.tar.gz django-treebeard-3.0.tar.gz djangocms-admin-style-1.0.7.tar.gz ExifRead-2.1.2.tar.gz html5lib-python-1.0b8.zip ibm_db-2.0.6.tar.gz ibm_db_django-1.0.7.tar.gz isapi_wsgi-0.4.2.zip LIST.TXT lzo-indexer-0.0.1.tar.gz PIL-1.1.7.tar.gz Pillow-3.0.0-cp27-none-win_amd64.whl pip-6.1.1.zip polib-1.0.7.tar.gz pyexcelerator-0.6.4.1.tar.bz2 pymemcache-1.3.5.tar.gz pymssql-2.0.0b1-dev-20111018.tar.gz pymssql-2.0.0b1-dev-20111019.tar.gz pymssql-2.0.0b1-dev-20130108.tar.gz pymssql-2.0.0b1-dev-20130403.tar.gz pymssql-2.0.0b1.win-amd64-py2.7.exe pyodbc-3.0.7.win-amd64-py2.7.exe pyodbc-3.0.7.zip python-memcached-1.54.tar.gz pywin32-218.win-amd64-py2.7.exe reportlab-3.2.0.tar.gz ReportLab_2_1.zip requests-2.9.1.tar.gz setuptools-19.2.tar.gz setuptools-19.2.zip six-1.10.0.tar.gz South-1.0.2.tar.gz

智能织梦:基于Rokid AR眼镜的家庭情感记忆增强系统设计与实践

本文介绍了基于Rokid AR眼镜的'智能织梦'系统,通过增强现实技术捕捉和重现家庭情感记忆。系统利用多模态传感器和轻量级情感识别模型,自动记录家庭互动中的情感峰值时刻,并生成沉浸式记忆片段。测试数据显示,该系统显著提升了家庭情感互动的频率和质量,特别适用于多代同堂家庭和记忆唤醒场景。

sre5engineer的博客 536

adodbapi orm对象查询(四)

Twisted 项目ORM 最终版本, 没有延迟加载,数据字段映射,简单就是美,查询出来的SQL就是对象直接传输到客户端,引用方便, 而且不会因为对象过大而无法传输到客户端 (开始的时候没有将数据分页保存,而是将ADO的recordset 放到一个对象里面保存, 结果客户端里PB反序列化出来直接是 一个字符串 “too big”类似的, 但是原先我用sqlobject 查询的时候 同样是

xugangjava的专栏 1330

SAP Workflow 工作流开发步骤总结

SAP WORKFLOW

qq_36952606的博客 5088

adodbapi orm对象查询(三)

转载注明出处 http://blog.youkuaiyun.com/xugangjava/article/details/7565420 接上篇,写两个适配器一个用于查询Query,一个用于Execute ######################################################################## #decorators def Query(fn

xugangjava的专栏 839

星宸科技SSD20x/SSD21X应用层DEMO实战指南:从入门到深度定制

本文详细介绍了星宸科技SSD20x/SSD21X系列芯片的应用层DEMO开发实战,从基础环境搭建到深度定制开发。内容涵盖DEMO资源获取、核心功能实现、第三方库集成以及性能优化技巧,帮助开发者快速掌握智能显示和多媒体处理应用的开发方法。特别适合嵌入式开发者在智能家居、工业控制等场景中应用。

weixin_42524226的博客 267

【HDL系列】除法器(3)——基2 SRT算法

目录 一、除法表示 二、数字递归算法基础公式 三、QDS(Quotient Digit Selection)函数 四、基2 SRT算法 一、除法表示 除法被定义如下: 其中,x是被除数,d是除数,q是商,rem是余数。 商的精度由ulp(unit of last position)来决定: 如果ulp=1, 商q则是整数; 如果ulp=r^(-n),n是商数个数,r是所有输入操作数的基,此时商为小数。 二、数字递归算法基础公式 在使用数字递归算法(Digit Re...

纸上谈芯的专栏 8155

adodbapi orm对象查询(二)

转载注明出处 http://blog.youkuaiyun.com/xugangjava/article/details/7565420 接上篇,实现SQL关键字,以前搞java这些经常是数据库改了一个字段, 先改数据库,然后改SQL,还要改Javabean,最后还要去改前台页面 实现下面这些函数将会是代码更加简化 #where def where(**kv): keys='' param

xugangjava的专栏 999

一文搞懂 Transformer 工作原理 !!

本文将从单头Attention工作原理多头Attention工作原理全连接网络工作原理三个方面,实现一文搞懂Transformer的工作原理。Transformer工作原理。

不要给自己设限,尝试更多可能(思所向 皆可往) 2988

SqlAlchemy 2.0 中文文档(六十三)

原文:docs.sqlalchemy.org/en/20/contents.html 1.0 变更日志 原文:docs.sqlalchemy.org/en/20/changelog/changelog_10.html 1.0.19 发布日期:2017 年 8 月 3 日 oracle [oracle] [performance] [bug] [py2k] 修复了由于修复了#3937引起的性能回退,其中 cx_Oracle 在 5.3 版本中从其命名空间中删除了.UNICODE符号,这被解释为 c

龙哥盟 1697

【8】mctp & pldm

异步会check seq,保证不丢包,虽然发一条req,不用等,但是不能发下一条req,等上条response回来后才能发下一条。TO(tag owner)=1是request,TO=0是response,但是异步通信response由0改为1。如下还有kcs,i3c,serial等。

持续更新ing... 1079

光学测量仿真软件:Zygo_(5).Zygo的数据处理与分析方法

通过上述综合案例,我们可以看到Zygo中的数据处理与分析方法是如何一步一步应用于实际数据的。从数据导入到预处理,再到滤波、表面分析、缺陷检测和数据可视化,每一步都至关重要,最终确保了数据的准确性和可靠性。处理后的数据还可以导出为多种格式,便于在其他软件中进行进一步的处理或报告。希望这个案例能够帮助您更好地理解和应用Zygo中的数据处理与分析方法。

kkchenjj的博客 946

Python 3.2 中adodbapi的问题

一直在使用Python 2.X,最近想测试一下最新的Python 3.2.下载了ActivePython 3.2,PyQt4,Eric5,安装配置完环境. 因为原系统中使用adodbapi连接MSSQL 数据库,所以首先测试一下adodbapi.在ActivePython 3.2中,默认安装了adodbapi的2.4版本,我就直接测试了一下连接数据库. 没想到简单地连接操作就报告错误,一看,是...

weixin_33674437的博客 337

瑞芯微RV1109平台GT911触摸屏驱动调试记录1

很明显这里可以看到系统已经配置了i2c-0、i2c-1、i2c-3、i2c-4、i2c-5,当开机的时候系统已经将相应的I2C节点注册成功了,说明I2C部分是没有问题的。

bingdund的博客 297

adodbapi的bug?

在Python下操作Access数据库,以前一直都是用win32com创建ADO对象,然后操作,最近看到一个adodbapi模块,基于win32com,符合Python DB API 2.0接口,看着不错,就试了试。在使用的时候发现一个问题。当我用adodbapi.connect打开一个Access数据库文件,进行操作,关闭,然后再次调用adodbapi.connect打开同一数据库的时候,会

肥三的专栏 1937

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Python 基本知识

  Python (发音:[ 'paiθ(ə)n; (US) 'paiθɔn ]),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行。目前,基于这种语言的相关技术正在...

yanzhijun888的专栏 587

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

python 使用 adodbapi 连接mssql2005的连接字符串

装adodbapi前一定要装 pywin32 这个库(http://www.lfd.uci.edu/~gohlke/pythonlibs) 下载adodbapi(http://pan.baidu.com/s/1bnd5j5d),解压,运行命令行python setup.py install 连接字符串 示例: Provider=SQLOLEDB.1;Data Source=1...

weixin_30530939的博客 235

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Twised 文件传输协议设计

最近在做一个文档的管理系统,用ftp的话 权限 不够,有的目录无权访问。 网上找了一些,都不能够满足业务需要,只有自己来设计一个通信协议来传输文件 设计思路是 切换 服务端和 客户端 的状态来完成文件发送(其实点对点用这个协议也可以) 下面协议测试代码,将D:/book.pdf 发送到D:/1.pdf  后续还需要扩展断点 相关功能 服务端 # -*- coding: gbk -*-

xugangjava的专栏 2971
上一篇: wxpyhton打包后图标背景变黑
下一篇: adodbapi orm对象查询(二)
xugangjava
博客等级 码龄16年 83粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值