Um eine neue, leere .accdb-Datei zu erstellen, wird der folgende Python-Code sollte es tun:
import win32com.client
f = 'C:\\Users\\Gord\\Desktop\\pyTest.accdb'
c = win32com.client.Dispatch('ADOX.Catalog')
c.Create('Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' + f + ';')
c = None
print '"' + f + '" created.'
[Edit 1]
ein Kommentar zu einem Blog-Beitrag here schlägt vor, dass, wenn der .Create
Aufruf generiert eine "Klasse nicht registriert" Fehler müssen Sie möglicherweise regsvr32.exe
msadox.dll
erneut registrieren. Seien Sie sich bewusst von "Bitness", wenn Sie dies versuchen: Es gibt 32-Bit- und 64-Bit-Versionen von beide dieser Dateien:
64-Bit
C: \ Windows \ System32 \ regsvr32.exe
C: \ Programme \ Gemeinsame Dateien \ System \ ado \ msadox.dll
32-Bit
C: \ Windows \ SysWOW64 \ regsvr32.exe
C: \ Program Files (x86) \ Gemeinsame Dateien \ System \ ado \ msadox.dll
Beachten Sie auch, dass Sie 32-Bit-Python auf einem 64-Bit-Computer ausführen können.
[Edit 2]
Ich habe ein paar Tests durchgeführt und haben zu dem Schluss gekommen, dass dieser Ansatz nicht in diesem speziellen Fall nicht funktioniert, weil das Python-Skript wurde als 64-Bit ausgeführt wird, aber die 64 -bit Access Datenbankmodul wurde nicht installiert. (32-Bit-Office installiert nur die 32-Bit-Version von ACE.)
Die Fehlermeldung war vielleicht ein bisschen irreführend. Es war nicht die ADOX-Komponente, die fehlte (nicht registriert), es war die 64-Bit-Version der ACE-Engine selbst, die nicht gefunden werden konnte.
Weiterhin auf einem 64-Bit-Rechner mit 32-Bit-Access installiert, die 64-Bit-Version von ACE wird nie verfügbar sein, weil es nicht
installiert werden kann
Dies könnte sehr gut Auswirkungen haben, wenn Sie versuchen, Daten in der ACCDB-Datei aus einem 64-Bit-Python-Skript zu bearbeiten. Ich hatte nicht Python auf meinem "32-Bit-Office auf 64-Bit-Windows" Test-Maschine, aber wenn ich versuche, das folgende VBScript ...
Option Explicit
Dim con, rst
Set con = CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data source=C:\Users\Gord\Desktop\adoTest.accdb;"
Set rst = CreateObject("ADODB.Recordset")
rst.Open "SELECT Field1 FROM Table1", con
Wscript.Echo rst(0).Value
rst.Close
Set rst = Nothing
con.Close
Set con = Nothing
...die Ergebnisse waren wie folgt:
C:\__tmp>C:\Windows\System32\cscript.exe /nologo dataAccessTest.vbs
C:\__tmp\dataAccessTest.vbs(4, 1) ADODB.Connection: Provider cannot be found.
It may not be properly installed.
C:\__tmp>C:\Windows\SysWOW64\cscript.exe /nologo dataAccessTest.vbs
This is Table1 data in Access.
Das Skript, wenn sie als 64-Bit ausgeführt werden kann, aber es funktionierte, wenn sie als 32-Bit laufen.
Empfehlung: Wenn auf Ihrem Computer 32-Bit Access installiert ist, sollten Sie Ihre Python-Skripte wahrscheinlich auch als 32-Bit ausführen.
Ausgezeichnet, das hat wie ein Charme funktioniert! Nur noch eine Frage: Woher bekomme ich alle Informationen, die Sie für dbLangGeneral festgelegt haben? Cheers Thomas –
In einer Access-Sitzung habe ich 'Debug.Print dbLangGeneral' verwendet und die zurückgegebene Zeichenfolge kopiert. Weitere Informationen zu anderen Optionen finden Sie im Hilfethema CreateDatabase. – HansUp