एक नया, रिक्त .accdb फ़ाइल बनाने के लिए, निम्न पायथन कोड चाल करना चाहिए:
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.'
[संपादित करें 1]
एक के लिए एक टिप्पणी ब्लॉग पोस्टिंग here बताता है कि यदि .Create
कॉल "क्लास पंजीकृत नहीं है" त्रुटि उत्पन्न करता है तो आपको को फिर से पंजीकृत करने के लिए regsvr32.exe
का उपयोग करने की आवश्यकता हो सकती है। "Bitness" से सावधान रहें जब आप इस प्रयास: के 32-बिट और 64-बिट संस्करण उन फ़ाइलों के दोनों हैं:
64-बिट
C: \ Windows \ System32 \ regsvr32.exe
C: \ Program Files \ Common Files \ System \ हलचल \ msadox.dll
32-बिट
C: \ Windows \ SysWOW64 \ regsvr32.exe
C: \ Program Files (x86) \ सामान्य फ़ाइलें \ System \ ado \ msadox.dll
इसके अलावा, ध्यान रखें कि आप 64-बिट मशीन पर 32-बिट पायथन चला सकते हैं।
[संपादित करें 2]
मैं कुछ परीक्षण किया है और निष्कर्ष है कि इस दृष्टिकोण इस विशेष मामले में काम नहीं किया क्योंकि अजगर स्क्रिप्ट 64-बिट के रूप में चल रहा था पर पहुँच गए हैं, लेकिन 64 -बिट एक्सेस डेटाबेस इंजन स्थापित नहीं किया गया था। (32-बिट ऑफिस केवल एसीई के 32-बिट संस्करण को स्थापित करता है।)
त्रुटि संदेश शायद थोड़ा भ्रामक था। यह एडीओएक्स घटक नहीं था जो गायब था (पंजीकृत नहीं), यह एसीई इंजन का 64-बिट संस्करण था जो पाया नहीं जा सका।
इसके अलावा, एक 64-बिट मशीन 32-बिट प्रवेश के साथ स्थापित पर, ऐस के 64-बिट संस्करण कभी नहीं उपलब्ध हो जाएगा, क्योंकि यह
यह कर सकता है बहुत अच्छी तरह से स्थापित नहीं किया जा सकता जब आप 64-बिट पायथन स्क्रिप्ट से .accdb फ़ाइल में डेटा को हेरफेर करने का प्रयास करते हैं तो प्रभाव पड़ता है। मैं अजगर अपने परीक्षण मशीन "64-बिट Windows पर 32-बिट कार्यालय" पर उपलब्ध नहीं था, लेकिन मैं निम्नलिखित 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
की कोशिश की जब ...परिणाम इस प्रकार थे:
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.
64-बिट के रूप में चलाने पर स्क्रिप्ट विफल रही, लेकिन 32-बिट के रूप में चलने पर यह काम करता था।
अनुशंसा: यदि आपकी मशीन में 32-बिट एक्सेस स्थापित है तो आप शायद अपनी पाइथन स्क्रिप्ट को 32-बिट के रूप में चलाने से बेहतर होंगे।
उत्कृष्ट, यह एक आकर्षण की तरह काम किया! बस एक और सवाल: मैं dbLangGeneral के लिए सेट की गई सभी जानकारी कहां से प्राप्त करूं? चीयर्स थॉमस –
किसी एक्सेस सत्र के भीतर से, मैंने 'Debug.Print dbLangGeneral' का उपयोग किया और लौटाई गई स्ट्रिंग की प्रतिलिपि बनाई। अन्य विकल्पों के विवरण के लिए CreateDatabase सहायता विषय देखें। – HansUp