Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर, पायथन और OS X

सारांश

मैं योसेमाइट संस्करण 10.10.1 पर एक मैक का उपयोग कर रहा हूं जो एमएस एसक्यूएल सर्वर डेटाबेस से कनेक्ट करने का प्रयास कर रहा है। मैंने खोजा और एक अद्यतन विस्तृत उत्तर नहीं मिला, इसलिए यहां एक लेखन है जो ज्यादातर इस अद्भुत लेख से है यहां . यदि लिंक मर जाता है तो मैं इसे स्टैक ओवरफ्लो पर जोड़ रहा हूं। विचार यह है कि हमारे पास सेटअप/कनेक्ट करने के लिए निम्न परतें होंगी।

परतें

  • भाग 1 - pyodbc
  • भाग 2 - मुक्त टीडीएस (tsql के साथ जांच कर सकते हैं)
  • भाग 3 - unixODBC (isql से जांच कर सकते हैं)
  • भाग 4 - एमएस एसक्यूएल (एक नियमित अजगर कार्यक्रम के साथ जांच कर सकते हैं)

कदम

  1. होमब्रू इंस्टॉल करें यहां से - यह मैक ओएसएक्स के लिए एक पैकेज मैनेजर है। यह आलेख दिखाता है कि किसी अन्य पैकेज प्रबंधक 'MacPorts' का उपयोग कैसे करें। मेरे निर्देशों के लिए, वे होमब्रे के साथ हैं। मूल रूप से होमब्रे में एक फ़ोल्डर 'सेलर' होता है जिसमें पैकेज के विभिन्न संस्करण होते हैं। आपकी सामान्य फ़ाइलों को संशोधित करने के बजाय, यह इन होमब्रे पैकेजों की ओर इशारा करता है।

  2. हमें 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 ड्राइवर का उपयोग करता है। बिल्कुल सही!

  1. मुफ्त टीडीएस स्थापित करें brew install freetds --with-unixodbc . के साथ (फ्रीटीडीएस वह ड्राइवर है जो मैक ओडीबीसी और एमएस एसक्यूएल सर्वर के बीच बैठता है, यह यहां चार्ट दिखाता है कि आपके विशिष्ट Microsoft सर्वर संस्करण के आधार पर आपको TDS के किस संस्करण का उपयोग करना चाहिए; जैसे माइक्रोसॉफ्ट एसक्यूएल सर्वर 2008 के लिए टीडीएस प्रोटोकॉल 7.2)।

  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
    
  3. नि:शुल्क टीडीएस स्थापित सत्यापित करें इसके साथ सही ढंग से:tsql -S myserver -U myuser -P mypassword (यदि यह काम करता है तो आपको इस तरह का एक संकेत देखना चाहिए)

    locale is "en_US.UTF-8"
    locale charset is "UTF-8"
    using default charset "UTF-8"
    1>
    
  4. यूनिक्सओडीबीसी स्थापित करें brew install unixodbc . के साथ ।

  5. अपनी unixODBC कॉन्फ़िगरेशन फ़ाइलें सेट करें , जिसमें odbcinst.ini . शामिल है (चालक विन्यास), और odbc.ini (DSN कॉन्फ़िगरेशन फ़ाइल)। डिफ़ॉल्ट रूप से, मेरी फ़ाइलें इसमें थीं:/Library/ODBC (नोट:मेरी उपयोगकर्ता लाइब्रेरी उर्फ/उपयोगकर्ता/विलियमलियू/लाइब्रेरी नहीं)। या वे आपके होमब्रेव इंस्टॉलेशन डायरेक्टरी में भी हो सकते हैं /usr/local/Cellar/unixodbc/<version>/etc

  6. अपनी '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
    
  7. अपनी '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
    
  8. unixODBC सत्यापित करें इसके साथ सही ढंग से स्थापित:isql MYSERVER MYUSER MYPASSWORD . यदि आपको कोई त्रुटि मिलती है जिसे आप कनेक्ट नहीं कर सकते हैं, तो -v जोड़ें यह जांचने के लिए कि वर्बोज़ आउटपुट क्या है और इसे ठीक करें। अन्यथा, आपको यह देखना चाहिए:

    +---------------------------------------+
    | Connected!                            |
    |                                       |
    | sql-statement                         |
    | help [tablename]                      |
    | quit                                  |
    |                                       |
    +---------------------------------------+ 
    
  9. अब 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 का।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-SQL का उपयोग करके SQL सर्वर में एक CHECK बाधा को संशोधित करें

  2. SQL सर्वर में डेटाबेस मेल सक्षम करें (T-SQL)

  3. एसक्यूएल पैरेंट चाइल्ड ट्री सॉर्ट ऑर्डर के साथ

  4. SQL कथन - अनुक्रमण के साथ गति को कैसे सुधार सकते हैं

  5. MONTH () SQL सर्वर में उदाहरण (T-SQL)