सारांश
मैं योसेमाइट संस्करण 10.10.1 पर एक मैक का उपयोग कर रहा हूं जो एमएस एसक्यूएल सर्वर डेटाबेस से कनेक्ट करने का प्रयास कर रहा है। मैंने खोजा और एक अद्यतन विस्तृत उत्तर नहीं मिला, इसलिए यहां एक लेखन है जो ज्यादातर इस अद्भुत लेख से है यहां . यदि लिंक मर जाता है तो मैं इसे स्टैक ओवरफ्लो पर जोड़ रहा हूं। विचार यह है कि हमारे पास सेटअप/कनेक्ट करने के लिए निम्न परतें होंगी।
परतें
- भाग 1 - pyodbc
- भाग 2 - मुक्त टीडीएस (tsql के साथ जांच कर सकते हैं)
- भाग 3 - unixODBC (isql से जांच कर सकते हैं)
- भाग 4 - एमएस एसक्यूएल (एक नियमित अजगर कार्यक्रम के साथ जांच कर सकते हैं)
कदम
-
होमब्रू इंस्टॉल करें यहां से - यह मैक ओएसएक्स के लिए एक पैकेज मैनेजर है। यह आलेख दिखाता है कि किसी अन्य पैकेज प्रबंधक 'MacPorts' का उपयोग कैसे करें। मेरे निर्देशों के लिए, वे होमब्रे के साथ हैं। मूल रूप से होमब्रे में एक फ़ोल्डर 'सेलर' होता है जिसमें पैकेज के विभिन्न संस्करण होते हैं। आपकी सामान्य फ़ाइलों को संशोधित करने के बजाय, यह इन होमब्रे पैकेजों की ओर इशारा करता है।
-
हमें Pyodbc स्थापित करने की आवश्यकता है, लेकिन pyodbc डिफ़ॉल्ट रूप से iODBC ड्राइवरों का उपयोग करता है (जो मैक के साथ स्थापित होता है), लेकिन बहुत से लोगों को इसे काम करने में समस्या होती है। इसलिए, हम
unixodbc
. नामक एक विकल्प का उपयोग करने जा रहे हैं , जिसे हम भविष्य में स्थापित करेंगे। अभी के लिए, हमें pyodbc इंस्टॉलेशन को इस तरह कॉन्फ़िगर करने की आवश्यकता है कि यह unixodbc के साथ काम करे।
PyPi पर जाएं और pyodbc टारबॉल डाउनलोड करें और इसे अनकंप्रेस करें। फिर इन पंक्तियों को setup.py
. में बदलें :
elif sys.platform == 'darwin':
# OS/X now ships with iODBC.
settings['libraries'].append('iodbc')
को:
elif sys.platform == 'darwin':
# OS/X now ships with iODBC.
settings['libraries'].append('odbc')
और अब python setup.py install
चलाएं ।
यह हमारे pyodbc इंस्टॉलेशन को डिफ़ॉल्ट रूप से unixodbc ड्राइवर का उपयोग करता है। बिल्कुल सही!
-
मुफ्त टीडीएस स्थापित करें
brew install freetds --with-unixodbc
. के साथ (फ्रीटीडीएस वह ड्राइवर है जो मैक ओडीबीसी और एमएस एसक्यूएल सर्वर के बीच बैठता है, यह यहां चार्ट दिखाता है कि आपके विशिष्ट Microsoft सर्वर संस्करण के आधार पर आपको TDS के किस संस्करण का उपयोग करना चाहिए; जैसे माइक्रोसॉफ्ट एसक्यूएल सर्वर 2008 के लिए टीडीएस प्रोटोकॉल 7.2)। -
कॉन्फ़िगर करें
freetds.conf
फ़ाइल (फ़ाइल '/usr/local/etc/freetds.conf' में होनी चाहिए, जो Homebrew के लिए '/usr/local/Cellar/freetds/0.91_2/etc' कहने के लिए एक लिंक है, लेकिन आपका कहीं और हो सकता है संस्करण के आधार पर)। मैंने वैश्विक संपादित किया और अपनी डेटाबेस जानकारी को अंत तक जोड़ा (किसी कारण से 'tds संस्करण =7.2' एक त्रुटि फेंक देगा, लेकिन फिर भी काम करेगा, जबकि 8.0 बस काम करता है):[global] # TDS protocol version tds version = 8.0 [MYSERVER] host = MYSERVER port = 1433 tds version = 8.0
-
नि:शुल्क टीडीएस स्थापित सत्यापित करें इसके साथ सही ढंग से:
tsql -S myserver -U myuser -P mypassword
(यदि यह काम करता है तो आपको इस तरह का एक संकेत देखना चाहिए)locale is "en_US.UTF-8" locale charset is "UTF-8" using default charset "UTF-8" 1>
-
यूनिक्सओडीबीसी स्थापित करें
brew install unixodbc
. के साथ । -
अपनी unixODBC कॉन्फ़िगरेशन फ़ाइलें सेट करें , जिसमें odbcinst.ini . शामिल है (चालक विन्यास), और odbc.ini (DSN कॉन्फ़िगरेशन फ़ाइल)। डिफ़ॉल्ट रूप से, मेरी फ़ाइलें इसमें थीं:
/Library/ODBC
(नोट:मेरी उपयोगकर्ता लाइब्रेरी उर्फ/उपयोगकर्ता/विलियमलियू/लाइब्रेरी नहीं)। या वे आपके होमब्रेव इंस्टॉलेशन डायरेक्टरी में भी हो सकते हैं/usr/local/Cellar/unixodbc/<version>/etc
। -
अपनी 'odbcinst.ini खोलें ' फ़ाइल और फिर निम्नलिखित जोड़ें (नोट:यदि आप MacPorts का उपयोग करते हैं तो अलग है। Homebrew के लिए, यह फ़ाइल होमब्रे संस्करण के लिए एक लिंक है जैसे मेरा '/usr/local/Cellar/freetds/0.91_2/lib/libtdsodbc.so '):
[FreeTDS] Description=FreeTDS Driver for Linux & MSSQL on Win32 Driver=/usr/local/lib/libtdsodbc.so Setup=/usr/local/lib/libtdsodbc.so UsageCount=1
-
अपनी 'odbc.ini खोलें ' और फिर निम्नलिखित जोड़ें (यह आमतौर पर
odbcinst.ini
. के साथ होता है :[MYSERVER] Description = Test to SQLServer Driver = FreeTDS Trace = Yes TraceFile = /tmp/sql.log Database = MYDATABASE Servername = MYSERVER UserName = MYUSER Password = MYPASSWORD Port = 1433 Protocol = 8.0 ReadOnly = No RowVersioning = No ShowSystemTables = No ShowOidColumn = No FakeOidIndex = No
-
unixODBC सत्यापित करें इसके साथ सही ढंग से स्थापित:
isql MYSERVER MYUSER MYPASSWORD
. यदि आपको कोई त्रुटि मिलती है जिसे आप कनेक्ट नहीं कर सकते हैं, तो-v
जोड़ें यह जांचने के लिए कि वर्बोज़ आउटपुट क्या है और इसे ठीक करें। अन्यथा, आपको यह देखना चाहिए:+---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+
-
अब pyodbc कार्य सत्यापित करें एक पायथन कार्यक्रम के साथ। इसके साथ शेल या एक .py फ़ाइल में अजगर चलाएँ और आपको अपनी क्वेरी वापस मिलनी चाहिए:
import pyodbc import pandas import pandas.io.sql as psql cnxn = pyodbc.connect('DSN=MYSERVER;UID=MYUSER;PWD=MYPASSWORD') cursor = cnxn.cursor() sql = ("SELECT * FROM dbo.MYDATABASE") df = psql.frame_query(sql, cnxn)
आप दस्तावेज़ीकरण देख सकते हैं इसके बाद और सहायता पाने के लिए pyodbc का।