2009-05-12 12 views
29

मैं पायथन में माइक्रोसॉफ्ट एक्सेस डेटाबेस कैसे एक्सेस कर सकता हूं? एसक्यूएल के साथ?मुझे पायथन का उपयोग कर माइक्रोसॉफ्ट एक्सेस डेटाबेस को पढ़ने की क्या ज़रूरत है?

मैं लिनक्स के साथ काम करने वाला एक समाधान पसंद करूंगा, लेकिन मैं विंडोज के लिए भी व्यवस्थित हो सकता हूं।

मुझे केवल पढ़ने की आवश्यकता है।

उत्तर

20

मैंने विंडोज़ पर एमएस एक्सेस डीबी के लिए सफलतापूर्वक कनेक्ट करने के लिए PYODBC का उपयोग किया है। इंस्टॉल आसान था, उपयोग काफी सरल है, आपको बस सही कनेक्शन स्ट्रिंग सेट करने की आवश्यकता है (सूची में एमएस एक्सेस के लिए एक दिया गया है) और आप उदाहरणों के साथ जाते हैं।

+4

नोटिस इस सवाल में लिनक्स कहते हैं, और आपने विनम्रता से विंडोज़ का उल्लेख किया है। लिनक्स (एक pyodbc dev से) के लिए सही उत्तर http://stackoverflow.com/a/15400363/638649 – matchew

10

कैसे pyodbc? This SO question दर्शाता है कि इसका उपयोग करके एमएस एक्सेस को पढ़ना संभव है।

1

अधिकतर, आप अपने डेटा तक पहुंचने के लिए SQLAlchemy जैसे एक अच्छे ढांचे का उपयोग करना चाहेंगे, या कम से कम, मैं इसकी अनुशंसा करता हूं। Support for Access "प्रयोगात्मक" है, लेकिन मुझे बिना किसी समस्या के इसका उपयोग करना याद है। यह एक्सेस डीबीएस से कनेक्ट करने के लिए हुड के नीचे pyodbc का उपयोग करता है, इसलिए इसे विंडोज़, लिनक्स, ओएस एक्स और व्हाट्नॉट से काम करना चाहिए।

+0

मुझे केवल अपने SQLite समर्थित तूफान मॉडल में डेटा आयात करने की आवश्यकता है। :) –

+0

SQLAlchemy + एमएस एक्सेस SQLAlchemy 0.5+ के लिए काम नहीं करता है, क्योंकि इसके लिए कोड अपडेट नहीं किया गया है। – Mike

+1

जो odbc का उपयोग करता है, जो भौतिक डेटाबेस फ़ाइलों को पहली जगह तक पहुंचने की समस्या का समाधान नहीं करता है। – oligofren

0

यदि आप EQL Data का उपयोग कर अपने डेटाबेस को वेब पर सिंक करते हैं, तो आप जेएसओएन या वाईएएमएल: http://eqldata.com/kb/1002 का उपयोग करके अपनी एक्सेस टेबल की सामग्री से पूछ सकते हैं।

यह लेख PHP के बारे में है, लेकिन यह पाइथन में भी काम करेगा।

9

आपको कुछ अच्छे समाधानों की तरह लगता है। एक और जो "धातु" के करीब थोड़ा हो सकता है, आप एमडीबी टूल्स चाहते हैं।

MDB Tools माइक्रोसॉफ्ट डीएलएल का उपयोग किये बिना एमएस एक्सेस डेटाबेस (एमडीबी फाइल) से डेटा निर्यात करने में सुविधा के लिए ओपन सोर्स लाइब्रेरीज़ और यूटिलिटीज का एक सेट है। इस प्रकार गैर विंडोज ओएस डेटा पढ़ सकते हैं। या, इसे एक और तरीका रखने के लिए, वे एमडीबी फ़ाइल के लेआउट को रिवर्स इंजीनियरिंग कर रहे हैं।

यह भी ध्यान रखें कि मुझे संदेह है कि उन्होंने एसीसीडीबी फाइलों पर काम करना शुरू कर दिया है और संभवतः उस क्षमता के लिए अधिक अनुरोध नहीं होने की संभावना है।

+0

वास्तव में सूचीबद्ध अन्य समाधानों में से कोई भी लिनक्स पर काम नहीं करता है (जब तक कि आप एक वाणिज्यिक चालक के लिए कुछ 800 डॉलर खोलना नहीं चाहते)। एमडीबी उपकरण "धातु के नजदीक" हो सकते हैं लेकिन इसमें एक यूनिक्सोडबीसी ड्राइवर शामिल है जो pyodbc onLinux का उपयोग कर एक्सेस डीबी को पढ़ना संभव बनाता है। मेरा दिन बचाने के लिए धन्यवाद! – atereshkin

+0

एक अद्भुत छोटा कार्यक्रम! अलग-अलग उपयोगिताओं के लिए नाम/दस्तावेज़ ढूंढना थोड़ा मुश्किल है, हालांकि संदर्भ के लिए: लिनक्स उपयोगकर्ता ऑटो-पूर्ण सूची प्राप्त करने के लिए 'मैन एमडीबी -' और फिर टैब का उपयोग कर सकते हैं; और हर कोई [इस जिथब भंडार] में txt फ़ाइलों को देख सकता है (https://github.com/brianb/mdbtools/tree/master/doc)। –

29

लिनक्स पर, एमडीबीटूल अब तक का एकमात्र मौका है। [disputed]

विंडोज़ पर, आप myb फ़ाइलों को pypyodbc से निपट सकते हैं।

import pypyodbc 
pypyodbc.win_create_mdb("D:\\Your_MDB_file_path.mdb") 

Here is an Hello World script कि पूरी तरह से demostate pypyodbc के एक्सेस सहायता कार्यों:

कोई पहुँच mdb फ़ाइल बनाने के लिए।

अस्वीकरण: मैं pypyodbc का डेवलपर हूं।

+0

आपके मुखपृष्ठ के अनुसार [यह लिनक्स पर चलता है] (http://code.google.com/p/pypyodbc/wiki/Linux_ODBC_in_3_steps)। –

+0

एमडीबी बनाने और कॉम्पैक्ट फ़ंक्शंस केवल विंडोज़ पर चलते हैं, क्योंकि यह ओडीबीसी इंटरफेसिंग फ़ंक्शंस है, यह क्रॉस प्लेटफॉर्म है। – pypyodbc

+0

यह वास्तव में स्वीकार्य उत्तर होना चाहिए। धन्यवाद। लिनक्स mdbtools पर – matchew

3

पुराना सवाल, लेकिन मैंने सोचा कि मैं विंडोज के लिए एक pypyodbc वैकल्पिक सुझाव पोस्ट करूंगा: एडीओ। बाहर निकलता है, एक्सेस डेटाबेस, एक्सेल स्प्रैडशीट्स और आधुनिक के साथ कुछ भी (वास्तव में पुराने स्कूल ओडीबीसी के विपरीत) COM के माध्यम से प्राप्त करना वास्तव में आसान है।बाहर निम्न लेख

की जांच:

2

Ubuntu 12.04 पर यह है कि क्या मैं इसे काम करने के लिए किया था। कुछ अतिरिक्त ड्राइवरों स्थापित करने पर

$ sudo apt-get install python-pyodbc 

का पालन करें:

pyodbc स्थापित

import os 
import pyodbc 

db_path = os.path.join("path", "toyour", "db.mdb") 
odbc_connection_str = 'DRIVER={MDBTools};DBQ=%s;' % (db_path) 
connection = pyodbc.connect(odbc_connection_str) 
cursor = connection.cursor() 

query = "SELECT * FROM MSysObjects WHERE Type=1 AND Flags=0" 
cursor.execute(query) 
rows = cursor.fetchall() 
for row in rows: 
    print row 
:

$ sudo apt-get install mdbtools libmdbodbc1 

एक छोटे से परीक्षण कार्यक्रम जो डीबी को जोड़ता है और सभी तालिकाओं को प्रदर्शित करता है बनाओ

मुझे आशा है कि इससे मदद मिलेगी।

+1

यदि मैं कर्सर.tables() को आज़माता हूं तो मुझे एक सेगमेंटेशन गलती मिलती है ... – Cerin

0

आप कुछ समय के अतिरिक्त है, तो आप को ठीक करने और इस अजगर स्तरीय कि देशी COM32-ग्राहक एपीआई के माध्यम से MS-पहुँच डीबीएस पढ़ता अद्यतन करने के लिए कोशिश कर सकते हैं: Extraction and manipulation class for Microsoft Access

2

व्यक्तिगत रूप से, मैं कभी नहीं कर पाए हैं एमडीबी टूल्स (यूनिक्सोडबीसी जैसी संबंधित ओडीबीसी सामग्री के साथ) कई प्रयासों के बाद भी पाइथन या PHP के साथ ठीक से काम करने के लिए प्राप्त करें। मैंने इस प्रश्न के अन्य उत्तर में निर्देशों की कोशिश की here और मुझे जो भी मिला वह "सेगमेंटेशन गलती (कोर डंपेड)" था।

हालांकि, मुझे लिनक्स पर एमडीबी और .accdb फ़ाइलों दोनों को पढ़ने के लिए ज्योथन और UCanAccess जेडीबीसी ड्राइवर मिला। उबंटू 14.04 एलटीएस के तहत इसे कैसे सेट अप किया गया विस्तृत निर्देशों के लिए मेरा अन्य उत्तर here देखें।

0

जिस तरह से मैं विंडोज के तहत पाइथन को एमएस एक्सेस से कनेक्ट करता हूं, इस तरह से उपयोग कर रहा है: Connect to MS Access with Python। शायद आपको विन 7 पर कुछ परेशानी मिल सकती है, इसलिए मुझे एक समाधान मिला: Solving a connection between MS Access and Python on Windows 7

मैंने लिनक्स के तहत कनेक्ट करने का प्रयास नहीं किया है!

2

एक पांडा डेटाफ्रेम (विंडोज) के रूप में एक्सेस डेटाबेस पढ़ने के लिए।

यह एक बहुत तेज़ और आसान समाधान है जिसे मैंने छोटे डेटाबेस के लिए सफलतापूर्वक उपयोग किया है।

आप एक्सेल में एक स्थायी कड़ी बनाने और उस फ़ाइल को सहेज कर एक एक्सेस डेटाबेस पढ़ सकते हैं (यह क्लिकों की एक जोड़ी लेता है), यहाँ लिंक:

https://support.office.com/en-gb/article/Connect-an-Access-database-to-your-workbook-a3d6500c-4bec-40ce-8cdf-fb4edb723525

आप बस कि Excel फ़ाइल तो पढ़ सकते हैं एक पांडा डेटाफ्रेम के रूप में।

तो, उदाहरण के लिए, लिंक किए गए एक्सेल फ़ाइल को 'link_to_master.xlsx' के रूप में स्थान \ FileStore \ subfolder1 \ subfolder में सहेजें।

रन अजगर में निम्नलिखित:

import pandas as pd 
import os 
os.chdir('\\\\FileStore\\subfolder1\\subfolder') #sets the folder location 
df = pd.read_excel('link_to_master.xlsx') # reads the Excel file 
df 

लिंक ताज़ा की आवृत्ति पर विचार कर रहे हैं आप अपने अजगर स्क्रिप्ट फिर से दौरा है। यानी एक्सेल और एक्सेस के बीच का लिंक स्थिर है।

संबंधित मुद्दे