`

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

阅读更多

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

例程功能:

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

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

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

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

 

 1 # coding=utf-8
 2
 3 import  adodbapi


 4 class  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
62 if   __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 源代码

分享到:
评论

相关推荐

    16进制转10进制例程 十六进制转十进制

    16进制是逢16进一的计数系统,常用于表示二进制数据,因为它可以简洁地展示二进制的每一位,而10进制是我们日常生活中的常规计数系统。这篇入门级教程源码将教你如何将16进制转换为10进制。 16进制由0到9这10个...

    python例程 (1).rar_Python 例程_python_python例程

    在这个"python例程 (1).rar"压缩包中,我们很显然会发现一系列关于Python编程的基础教程和实例,特别关注了图形界面编辑和各种Python库的使用。 首先,让我们探讨Python语言基础。Python的基础语句包括但不限于变量...

    大疆机甲大师Python例程.zip

    使用中文命名的大疆机甲大师Python例程 使用中文命名的大疆机甲大师Python例程 使用中文命名的大疆机甲大师Python例程 使用中文命名的大疆机甲大师Python例程 使用中文命名的大疆机甲大师Python例程 使用中文命名的...

    实例007——将十进制数转换为二进制输出.zip

    十进制是我们日常生活和计算中最常用的数字系统,而二进制则是计算机内部处理数据的基础,它只使用0和1两个符号。 十进制到二进制的转换通常采用"除2取余法",也称为短除法。这个过程包括以下步骤: 1. 将十进制数...

    转换文本数字为二进制并保存

    在C++中,可以使用`std::ofstream`打开文件,然后使用写入操作符`写入二进制数据。 5. **VC6.0编译通过**:这表明这个例程是为Visual C++ 6.0编写的,这是一个较旧的开发环境。尽管现代开发工具已经更新,理解老...

    Python 火车票分析助手 Python源码

    Python 火车票分析助手 Python源码Python 火车票分析助手 Python源码Python 火车票分析助手 Python源码Python 火车票分析助手 Python源码Python 火车票分析助手 Python源码Python 火车票分析助手 Python源码Python ...

    gridmap:提供工具将二进制数据数组转换为浏览器中的可视化地图

    提供工具将二进制数据数组转换为浏览器中的可视化地图。 javascript中的数组计算 ndarray ( ) 例程集合:http: 使用传单显示地图图块 形状的 topojson: : 使用 javascript (nodejs) 代码教程: : node.js 和...

    16进制转10进制例程.rar

    16进制是一种逢16进1的计数制,通常用于表示计算机中的数据和地址,因为它能更简洁地表示二进制数。10进制是我们日常生活中最熟悉的计数系统,它基于10个数字:0, 1, 2, 3, 4, 5, 6, 7, 8, 和 9。 16进制转10进制的...

    VC二进制文件源码

    3. **读写操作**:使用read()和write()函数来读取和写入二进制数据。例如,读取一个整数: ```cpp int num; inputFile.read(reinterpret_cast*>(&num), sizeof(int)); ``` 写入一个字符串: ```cpp std::...

    易语言进制转换例程

    易语言是一种专为初学者设计的编程语言,其语法简洁明了,强调“易”用性。在易语言中进行进制转换是一项基础且重要的...在实际应用中,这样的转换例程可以用于数据编码、解码,或者在处理二进制数据时作为辅助工具。

    STM32数据进制转换程序,移植方便

    这个“STM32数据进制转换程序”就是专为此目的设计的,它可以方便地在各种进制之间进行快速、准确的转换。 程序的核心功能包括两个方面:一是任意进制与10进制之间的互转,二是任意进制之间的转换。这两种转换在...

    例程: sort binary_write_read

    在IT行业中,排序和二进制读写是两个非常基础且重要的概念,广泛应用于数据处理、文件存储等领域。本文将详细解析"sort"(排序)和"binary_write_read"(二进制读写)这两个主题,并结合提供的压缩包文件名,探讨...

    Python例程1.2-入门

    Python例程1.2-入门(conditionals,exceptions,for loop,function, generator, simple loop, while loop, error info)-Python examples 1.2-Quick Start(conditionals,exceptions,for loop,function, ...

    CPLD开发板配套veriLOG HDL 例程源码之二进制转BCD码

    二进制数系统是计算机内部的基础表示方式,而BCD码是一种将十进制数用二进制编码的方法,每个十进制位用四位二进制数来表示,这样便于数字电路处理十进制数据。在实际应用中,例如显示设备、财务计算等,BCD码的使用...

    理想的二进制掩码:将理想的二进制掩码应用于STFT框架内的噪声破坏语音信号。-matlab开发

    将理想的二进制掩码应用于噪声损坏的语音信号。 该处理在基于 FFT 的短时频谱分析-修改-合成框架内进行。 理想的二元掩码是根据预言机(真实)... 该例程返回合成的增强语音、理想的二进制掩码和真实的瞬时频谱 SNR。

    易语言进制转换源码例程.7z

    - 数据编码:如Base64编码,将任意二进制数据转换成可打印的字符,便于在网络传输中使用。 - 计算机硬件交互:例如,与硬件设备通信时,需要将十进制数值转换成特定的二进制格式。 5. 学习进制转换的重要性: - ...

    易语言-文本转二进制

    6. **写入二进制文件**:使用“写入二进制文件”命令将二进制数据保存到文件。 在这个过程中,易语言提供了丰富的内置函数,如“字符串.字符”用于获取字符串的单个字符,“整数转二进制字符串”用于将整数转换为二...

    ebfformat:高效的二进制数据格式-开源

    EBF代表高效二进制格式,它是一种二进制文件格式,可轻松读取和写入二进制数据。 当前在C,C ++,Fortran,Java,Python,IDL,MATLAB中提供阅读写作例程。 还提供了一个名为ebftkpy的程序,该程序具有一组实用程序...

    矩阵二进制编码与矩阵定义值二进制编码的数码管显示.rar

    在本例程中,提到的“矩阵二进制编码”指的是按下按键后,该按键在矩阵中的位置会被转换为二进制编码。例如,如果矩阵按键有4行4列,那么每个按键可以由两个二进制位表示,例如第一行第一列的按键可以表示为00,第一...

Global site tag (gtag.js) - Google Analytics