Python例程:使用adodbapi存取二进制数据
来源:互联网 发布:我的青春恋爱物语知乎 编辑:程序博客网 时间:2024/04/19 11:25
昨天尝试了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例程:使用adodbapi存取二进制数据
- Python例程:使用adodbapi访问MSSQL数据库
- python-二进制读写存取
- SQLite存取二进制数据
- redis存取二进制数据
- mysql存取二进制数据
- ue4-数据二进制存取
- python 使用 adodbapi 连接mssql2005的连接字符串
- 使用SQLite数据库存取mp3和图片等二进制数据
- Unity3D PlayerPrefs 存取二进制数据
- dbms_lob存取二进制,文本数据
- java存取二进制数据到xml文件
- MySQL中的二进制数据的存取
- 配合静态仓库进行二进制数据存取
- ByteBuffer之二进制数据的存取
- 使用mysqli存取数据
- 使用ADO存取数据
- 使用Sharedpreferences存取数据
- 批量替換
- sql数据库修复技术
- C#的New关键字有几种用法
- live不是万能的
- Python例程:使用adodbapi访问MSSQL数据库
- Python例程:使用adodbapi存取二进制数据
- CSDN博客如何添加友情链接的方法
- 一则笑话
- 在Appengine中使用AMF通信
- Appengine中的JSON序列化
- 上下文绑定对象之一(定义)
- Windows运行命令集锦
- Java编程那些事儿73——JDK文档使用
- ASP生成随机字符串