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

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

昨天尝试了adodbapi的常用操作,今天写一个存取二进制图片的程序试试,ado里面存取二进制数据还是要稍复杂点,不知道adodbapi表现又怎么样。

例程功能:

1. 新建一个测试表,用于存储图片数据

2. 读取源图片数据,插入一条记录到测试表

3. 读取新插入的表记录,将二进制字段数据写入到目标文件

4. 直接打开目标图片文件,看看内容是否与源图片一致

 

 1#coding=utf-8
 2
 3import adodbapi


 4class BlobDataTestor:
 5    def __init__(self):
 6     self.conn = None
 7     
 8    def __del__(self):
 9     try:
10         self.conn.close()
11     except:
12         pass
13     
14    def connectdb(self, connectString):
15     self.conn = adodbapi.connect(connectString)
16     
17    def closedb(self):
18     self.conn.close()
19    
20    def setup(self):
21        cursor = self.conn.cursor()
22        cursor.execute("""
23            CREATE TABLE [Dem_Picture] (
24                [ID] [int] IDENTITY (1, 1) NOT NULL ,
25                [PicData] [image] NULL ,
26                CONSTRAINT [PK_Dem_Picture] PRIMARY KEY  CLUSTERED 
27                (
28                    [ID]
29                )  ON [PRIMARY] 
30            ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY];""")
31        #self.conn.commit()
32
33    def teardown(self):
34        cursor = self.conn.cursor()
35        try:
36            cursor.execute("Drop Table Dem_Picture")
37        except:
38            pass
39        #self.conn.commit()
40            
41    def testRWBlobData(self):  
42        #读取源图片数据              
43        f = open("C://src.bmp", 'rb')
44        b = f.read()
45        f.close()
46        
47        #将图片数据写入表
48        cursor = self.conn.cursor()
49        cursor.execute("INSERT INTO Dem_Picture (PicData) VALUES (?)", (adodbapi.Binary(b),))
50        #self.conn.commit()
51        
52        #读取表内图片数据,并写入硬盘文件
53        cursor.execute("SELECT TOP 1 PicData FROM Dem_Picture ORDER BY ID DESC")
54        d = cursor.fetchone()[0]
55        cursor.close()
56        
57        f = open("C://dst.bmp", "wb")
58        f.write(d)
59        f.close()
60
61
62if __name__ == "__main__":
63    test = BlobDataTestor()
64    test.connectdb("Provider=SQLOLEDB.1;Persist Security Info=True;Password=;User ID=sa;Initial Catalog=pubs;Data Source=.")
65    try:
66        test.setup()
67        test.testRWBlobData()
68        test.teardown()
69    finally:
70        test.closedb()
71        

 

程序说明:

1. 存取二进制数据的关键在于将数据对象转换为 adodbapi.Binany 数据类型

2. 因为是测试程序,所以没有提交事务,不影响测试库

 

总结:

adodbapi操作二进制数据明显比ADO简单很多,只需要做下数据类型转换即可。

 

 

参考资料:

1. PEP-0249

2. adodbapi 源代码

 

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

相关推荐

QT - QODBC数据库编程 --- Access 中二进制大对象的存取 (2)

 Access中并没有BLOB或者CLOB类型字段,要将文件的二进制数据存放在Access中,需要使用的是Access的OLE对象字段,让人觉得不爽的是Access软件没有MySQL Query Broswer那样直接查看二进制数据,导出文件,甚至作为图像文件直接打开的功能,除非是将二进制大对象包装成OLE对象 。(这是题外话,但是的确给工作带来不便)回到Qt,Qt中要进行二进制大对象的数据库操作

THINK . DESIGN . CODE 5790

使用Python操作MSSQL数据库.

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

weixin_30347335的博客 229

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

adodbapi的bug?

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

肥三的专栏 1937

Python中执行存储过程及获取存储过程返回值的方法

本文实例讲述了Python中执行存储过程及获取存储过程返回值的方法。分享给大家供大家参考,具体如下: 在Pathon中如何执行存储过程呢?可以使用如下方法: 存储过程定义基本如下: ALTER procedure [dbo]. [mysp] @Station varchar ( 50), @SN varchar ( 50), @Info varchar ( 500) output , @Msg varchar ( 500) output 1. 使用adodbapi from adodbapi import connect server = 'dbserver' user = 'us

告别过热焦虑:用Ansys Icepak给你的电子设备做个“水冷体检”(附冷板案例全流程)

本文详细介绍了如何利用Ansys Icepak进行电子设备水冷系统的热仿真分析,帮助工程师解决设备过热问题。通过冷板案例全流程演示,展示了从几何处理、材料设定到求解器设置和后处理的关键步骤,提升散热设计效率与准确性。

weixin_29299807的博客 440

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

VS2022离线安装总闪退?可能是这个--noWeb参数没加对(完整参数指南)

本文深入解析了VS2022离线安装过程中常见的闪退问题,指出核心原因往往在于命令行参数使用不当,特别是`--noWeb`参数。文章提供了完整的参数使用指南和实战解决方案,包括证书处理、安装器文件修复及自动化脚本,帮助用户彻底解决离线部署中的验证失败与闪退难题。

weixin_28842269的博客 758

python读取多个sheet的xlsx文件

不废话,看代码 def read_excel2(path): data_xls = pd.io.excel.ExcelFile(path) data={} test = BlobDataTestor() print(data_xls.sheet_names) for name in data_xls.sheet_names: df=pd.read_excel(data_xls,sheet_name=name,header=None , usecols

web18224617243的博客 880

专有钉钉小程序(浙政钉)开发搭建流程总览

最近公司有一个项目要做浙政钉,让我来负责做。靠,我一脸懵,开发了两年多不知道浙政钉是啥,感觉我眼界还是低了。然后就去百度、同事问了一圈才知道就是个钉钉小程序嘛,然后发布到浙政钉上了。就搭建项目跑起来我都肥了很多事,中间走了很多坑。正好领导让我写《钉钉小程序前端开发流程》,这想着也写个博客吧。下面就是整个流程及我所遇到的坑!

m0_53910290的博客 6355

汽车工程师必看:从CAN到Ethernet,6种车载通信协议全解析(附应用场景对比)

本文全面解析了从CAN到Ethernet的6种车载通信协议,包括CAN、LIN、MOST、FlexRay等,并对比了它们的应用场景和技术特点。文章详细介绍了各协议的演进历程、技术优势及在现代汽车中的混合网络架构设计,为汽车工程师提供了实用的协议选型指南和未来通信技术发展趋势。

weixin_28683689的博客 491

Python 基本知识

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

yanzhijun888的专栏 587

避坑指南:SpringBoot对接拉卡拉支付常见问题与解决方案(含SDK 1.0.6配置技巧)

本文是一份SpringBoot项目对接拉卡拉支付的实战避坑指南。针对SDK 1.0.6版本,详细剖析了从依赖管理、多环境配置、SDK初始化到支付请求构建、回调验签及生产监控的全流程常见问题,并提供了经过验证的解决方案与配置技巧,旨在帮助开发者高效、稳定地集成支付功能。

k5l6m的博客 330

PythonLibrary 博客中文翻译(三十七)

在本视频中,您将了解 ReportLab 的 Canvas 对象。您可以使用 ReportLab 通过 Python 创建 pdf,本教程将向您展示一种实现方法。

龙哥盟 844

程序员实战:DINOv3 权重文件下载与本地化部署全流程指南

Meta开源的DINOv3视觉大模型凭借70亿参数和17亿图像训练,在语义分割、目标检测等任务表现优异。本文详解预训练权重的获取渠道、校验方法和加载实践。开发者可通过HuggingFace或GitHub获取不同版本权重,包括针对服务器端的ViT系列和边缘设备的ConvNeXt系列。文章提供MD5校验代码确保文件完整性,并给出PyTorch和Transformers两种加载方式。特别强调7B模型需16GB GPU内存,建议根据硬件条件选择合适版本,如边缘设备使用ConvNeXt-Tiny。最后指出DINOv3

xiugou3365的博客 5903

Vivado新手必看:5分钟搞定FPGA程序固化到Flash(附MCS文件生成全流程)

本文为FPGA新手详细解析了如何将程序固化到Flash存储器的完整流程。核心在于理解SRAM工艺FPGA断电易失的特性,并利用Vivado工具将比特流文件转换为Flash可识别的MCS文件。文章重点拆解了生成MCS文件的关键配置步骤、硬件连接要点,以及通过JTAG烧写Flash的实战操作,并提供了常见启动失败问题的排查清单,帮助开发者实现设计从调试到产品部署的关键跨越。

weixin_29230901的博客 351

python:数据库连接操作入门

python:数据库连接操作入门 模块# 1 import pymssql,pyodbc 模块说明#   pymssql和pyodbc模块都是常用的用于SQL Server、MySQL等数据库的连接及操作的模块,当然一些其他的模块也可以进行相应的操作,类似adodbapi、mssql、mxODBC等,我们在实际用的时候选择其中一个模块就好,对于每一个模块都有相应的支持版本和支持平台,大家可以自行查阅文档https://wiki.python.org/moin/SQL%20Server 模块安装 # 1 p

weixin_41053472的博客 2123

YOLOv11改进 | 添加注意力篇 | 一文带你改进GAM、CBAM、CA、ECA等通道注意力机制和多头注意力机制

这篇文章给大家带来的改进机制是一个汇总篇,包含一些简单的注意力机制,本来一直不想发这些内容的(网上教程太多了,发出来增加文章数量也没什么意义),但是群内的读者很多都问我这些机制所以单独出一期视频来汇总一些比较简单的注意力机制添加的方法和使用教程,本文的内容不会过度的去解释原理,更多的是从从代码的使用上和实用的角度出发去写这篇教程。欢迎大家订阅我的专栏一起学习YOLO!YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备目录一、本文介绍二、GAM2.1 GAM的介绍2.2 GAM的核心代码。

Snu77的博客 5151

Python如何执行存储过程,获取存储过程返回值

在Pathon中如何执行存储过程呢?可以使用如下方法:存储过程定义基本如下:ALTER  procedure [dbo].[mysp]         @Station varchar(50),         @SN varchar(50),        @Info va

andoring的专栏 2万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

PIP常用指令集合,帮你轻松掌握python库的安装使用

pip 是一个命令行程序。pip 支持从PyPI、版本控制、本地项目和直接从分发文件安装。下面开始整理学习到的pip常用指令: py -m pip使用您安装的最新 Python 解释器执行 pip。也可以直接执行使用pip。 pip安装Package C:>py -m pip install aarrr 说明: py -m pip install Package # 安装最新版本 py -m pip install Package==2.0.2 # 安装指定版本 py -

par@ish的博客 1430

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

dbeaver导入excel文件_将Excel或Csv文件中的数据导入到Python中

在数据处理中,我们常常需要把数据导入Python以便进行更加便捷的运算。工作中我们得到的数据多储存在excel或csv表格中,本文介绍如何将其导入python。本文用到了pandas库,并且在将excel和csv表格导入后使用pandas库中的dataframe来对数据进行存储和编辑。一、导库import pandas as pd二、创建.xlsx和.csv文件首先创建“新建 Micro...

weixin_39737224的博客 1万+

ODBC在ACCESS 中存取二进制

通过ODBC 操作ACCESS存取二进制文件,步骤如下:sprintf(sql,"INSERT INTO image(image) VALUES(?)");//sql语言 len = SQL_DATA_AT_EXEC;//必须SQLBindParameter(hstmt, 语句句柄                               1, //绑定序号         

敲着代码闯天下 1257

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 395
上一篇: Python例程:使用adodbapi访问MSSQL数据库
下一篇: 清除打印文档
七伤拳
博客等级 码龄25年 14粉丝 11原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值