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

SikuliX实战:5分钟搞定游戏挂机脚本(附防检测思路与Python集成技巧)

本文详细介绍了如何使用SikuliX快速开发游戏挂机脚本,包括环境配置、基础原理、防检测策略及Python集成技巧。通过实战案例展示如何实现自动化任务、高级防检测方案,并结合Python提升脚本性能与智能度,帮助玩家高效完成重复性游戏操作。

weixin_33228769的博客 334

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

哈密顿-雅可比不等式:连接最优控制与优化算法的自然物理原理

在控制理论与优化算法之间,存在一个深刻而实用的桥梁。最优控制理论旨在通过设计控制输入,使动态系统在时间维度上达到性能最优,其核心数学工具如庞特里亚金极大值原理和哈密顿-雅可比-贝尔曼方程,为解决连续时间系统的优化问题提供了优雅框架。然而,这些方法在高维非凸问题中面临求解难题。哈密顿-雅可比不等式作为一种松弛方法,通过构造李雅普诺夫函数并验证一个不等式条件,转而寻求性能有保障且易于实现的次优解,其本质是保证系统能量衰减和性能上界。这一原理与耗散性理论紧密相连,体现了自然物理系统(如阻尼振动)中能量耗散的普遍规

weixin_30582943的博客 313

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

使用 MATLAB/Simulink 构建一个 基于神经网络控制的单相并网逆变器系统

单相并网逆变器广泛应用于户用光伏小型储能和电动汽车V2G等场景。其核心控制目标是实现高质量的并网电流,即电流与电网电压同频同相(单位功率因数),且总谐波畸变率 (THD)极低。非线性因素:电力电子器件的开关死区非线性电感寄生参数。参数不确定性:滤波器元件(L, C)的老化温漂。电网扰动:电压谐波频率波动不平衡。模型依赖性:PI、PR等控制依赖于精确的系统模型,模型失配导致性能下降。动态响应:在光照突变(光伏)或负载突变(储能)下,需快速、无超调地响应。

xiaoheshang_123的博客 274

32GB Jetson Orin SOM 不能刷机问题排查

拿到了一个新的Orin SOM,当用orin Devkit CVB或定制的CVB不能用Linux_For_Tegra刷机,flash日志(JetPack5.0DP和5.0.1DP都失败了) 2. 确认mb2配置中将CVB的eeprom读取大小设置是否为0 ? 已经确认是正常的 在定制的orin cvb flash上使用Orin devkit som,启动是成功的。但新得到的Orin som并不工作可以排除理由:使用Orin Devkit CVB和Orin SOM(不是Devkit SOM)仍然不能

jzwjzw19900922的博客 1499

Python 基本知识

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

yanzhijun888的专栏 587

一次请求穿过的六道关卡:微服务基础组件的通信与IO、事件驱动、负载均衡、服务路由、API网关与配置协调

微服务的稳定性往往取决于看不见的基础组件。本文跟随一次下单请求,依次穿过API网关、服务路由、负载均衡与服务通信,再沿事件分支扇出,并从控制面审视配置中心。通信层剖析握手成本、连接复用、epoll与主从Reactor、心跳判活、退避抖动、截止时间与重试预算;事件层讲解编舞与编排、事务发件箱和幂等消费;均衡与路由对比静态与动态算法、路由链、全链路灰度与同区保底;网关讨论过滤器链与限流算法;配置部分给出四类配置、长轮询与共识协调,最后归纳五道防线。文中关键数据均来自可在Java8运行的演示程序。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 172万+

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

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

龙哥盟 844

华为od统一考试B卷【单词搜索】C++ 实现

找到它是一个小游戏,你需要在一个矩阵中找到给定的单词。假设给定单词 HELLOWORD,在矩阵中只要能找到 H->E->L->L->O->W->O->R->L->D连成的单词,就算通过。意区分英文字母大小写,并且您只能上下左右行走,不能走回头路。

MISAYAONE的博客 709

第95章 安全工程师:Shell 脚本实现安全扫描、漏洞检测、日志审计

随着网络安全威胁日益复杂,传统的手动安全管理已无法满足现代企业的安全需求。Shell 脚本为安全工程师提供了强大的自动化能力,能够实现 7×24 小时的安全监控、快速漏洞扫描、智能日志分析和实时威胁响应。本章将系统介绍如何使用 Shell 脚本构建完整的安全防护体系,从基线检查到实时监控,帮助你打造自动化的安全运维能力。

猪猪侠 90

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

【git】win 10 / win 11:git 首次拉取云效平台代码详细教程

git 首次拉取云效平台代码详细教程:Git 生成 SSH 公钥、云效工作台添加 SSH 公钥、git 使用 SSH / HTTP 链接拉取云效代码

顾三殇 —— 博客空间(软件测试) 4218

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

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

andoring的专栏 2万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

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

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

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

weixin_39737224的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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、付费专栏及课程。

余额充值