首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ADODBAPI编号与数据库的开放连接

ADODBAPI编号与数据库的开放连接
EN

Stack Overflow用户
提问于 2014-07-17 06:14:16
回答 1查看 636关注 0票数 1

,我要数不。当前使用ms-access数据库打开的连接。

例如,两个应用程序正在处理同一个数据库。那我怎么才能得到这个数字?在pypyodbc中是否有ms访问功能或任何设施?

用阿多巴比,我怎么能得到不。与数据库的开放连接??

我尝试了下面的代码。

代码语言:javascript
复制
#importing adodbapi 
import adodbapi # success 
#connection to database using the DSN 'test'
myConn = adodbapi.connect('test') # success
#get no. of open connection using openschema 
myConn.connector.OpenSchema(-1, None,"{947bb102-5d43-11d1-bdbf-00c04fb92675}") #fail

它会给出以下错误。

pywintypes.com_error:(-2147352567,“异常发生了。”),(0,u'ADODB.Connection',u‘’Object或provider无法实现

代码语言:javascript
复制
**performing requested operation.', u'C:\WINDOWS\HELP\ADO270.CHM',**
代码语言:javascript
复制
**1240648, -2146825037), None)**

有人能提供解决方案吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-17 12:19:53

就我个人而言,在本例中,我倾向于避免费心于adodbapi,只需让我的Python编写一个小VBScript,创建一个由选项卡分隔的具有打开连接的机器列表,通过subprocess.Popen运行VBScript,并解析结果:

代码语言:javascript
复制
import os
import subprocess

## test data
databaseFileSpec = r"Z:\pyTest.mdb"

vbsFileSpec =  os.environ['TEMP'] + r"\mypytemp.vbs"

scriptCode = """Option Explicit
Dim con, rst, strOut, strSeparator
Const adSchemaProviderSpecific = -1
Set con = CreateObject("ADODB.Connection")
con.Open( _
        "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source="""
scriptCode += databaseFileSpec
scriptCode += """")
Set rst = con.OpenSchema( _
        adSchemaProviderSpecific, _
        , _
        "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
strOut = ""
strSeparator = ""
Do While Not rst.EOF
    If rst(2).Value = "True" Then
        strOut = strOut & strSeparator & Left(rst(0).Value, Len(Trim(rst(0).Value)) - 1)
        strSeparator = vbTab
    End If
    rst.MoveNext
Loop
WScript.Echo strOut
rst.Close
con.Close"""

f = open(vbsFileSpec, 'w')
f.write(scriptCode)
f.close()

tabString = subprocess.Popen(
    "cscript /nologo \"" + vbsFileSpec + "\"",
    shell=True,
    stdout=subprocess.PIPE).stdout.read()
os.remove(vbsFileSpec)

print 'The following machines are connected to "' + databaseFileSpec + '":'
for x in tabString.split("\t"):
    print x

当我在两台不同的机器上打开数据库并运行上面的脚本时,我得到

代码语言:javascript
复制
The following machines are connected to "Z:\pyTest.mdb":
TESTPC
GORD01
GORD01

我的笔记本(GORD01)显示了两次,因为我在Access中打开了数据库,而VBScript在运行时也打开了连接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24796106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档