2008-11-14 18 views
23

मुझे mssql 2005 मिला है जो मेरे व्यक्तिगत कंप्यूटर पर एक डेटाबेस के साथ चल रहा है जिसे मैं कुछ पायथन स्क्रिप्ट चलाने के लिए चाहता हूं। मैं डेटा पर कुछ सचमुच सरल पहुंच करने का एक तरीका ढूंढ रहा हूं। मैं कुछ चुनिंदा बयान चलाने के लिए, डेटा को संसाधित करना चाहता हूं और शायद पाइथन परिणामों के साथ एक टेक्स्ट फ़ाइल को सहेज सकता हूं।python या ironpython के साथ mssql तक पहुंचने का सबसे आसान तरीका क्या है?

दुर्भाग्यवश, हालांकि मुझे पाइथन और डेटाबेस के बारे में थोड़ा सा पता है, फिर भी मुझे पढ़ने के लिए बहुत मुश्किल है, अगर एक पुस्तकालय जो मैं चाहता हूं। आदर्श रूप में, मुझे ऐसा कुछ चाहिए जो mssql के अन्य संस्करणों के लिए काम करता है, नि: शुल्क है और वाणिज्यिक उपयोग की अनुमति देने के लिए लाइसेंस प्राप्त है, उपयोग करने में आसान है, और संभवतया लोहे के साथ काम करता है।

उत्तर

18

मैं सीपीथन के साथ SQL Alchemy का उपयोग करता हूं (मुझे नहीं पता कि यह आयरनपीथन के साथ काम करेगा या नहीं)। यदि आपने हाइबरनेट/एन हाइबरनेट का उपयोग किया है तो यह आपके लिए बहुत परिचित होगा। यदि यह आपके लिए थोड़ा वर्बोज़ है, तो आप Elixir का उपयोग कर सकते हैं, जो कि SQL कीमिया के शीर्ष पर एक पतली परत है। इनमें से किसी एक का उपयोग करने के लिए, आपको pyodbc की आवश्यकता होगी, लेकिन यह एक बहुत ही सरल इंस्टॉल है।

बेशक, यदि आप सीधे एसक्यूएल लिखना चाहते हैं और ओआरएम का उपयोग नहीं करना चाहते हैं, तो आपको केवल pyodbc की आवश्यकता है।

+1

Pyodb रिकॉर्ड के लिए सबसे कार्यों –

4

मैंने सीपीथॉन के साथ सफलतापूर्वक pymssql का भी उपयोग किया। (SQLAlchemy के साथ और बिना)।

+1

के लिए काम करता है, मुझे विश्वास है कि SQLAlchemy में pymssql समर्थन मान्य नहीं है। अनुशंसित ड्राइवर pyodbc है (यह कहना नहीं है कि pymssql स्टैंडअलोन काम नहीं करेगा)। –

+0

ओह, इसके लिए धन्यवाद। –

1

मैंने मानक पायथन के साथ pymssql का उपयोग किया है और इसे पसंद किया है। यदि आप हैं तो मूल डेटाबेस पहुंच की तलाश में विकल्पों के मुकाबले संभवतः आसान है।

नमूना code

+0

नमूना कोड लिंक टूट गया है। कृपया ठीक करें या हटाएं। – DavidJ

+0

हो गया! लिंक अपडेट किया गया। –

12

पायडबैक सक्रियस्टेट पायथन के साथ आता है, जिसे here से डाउनलोड किया जा सकता है। एक न्यूनतम ODBC स्क्रिप्ट एक SQL सर्वर 2005 डेटाबेस इस तरह दिखता है से कनेक्ट करने के:

import odbc 

CONNECTION_STRING=""" 
Driver={SQL Native Client}; 
Server=[Insert Server Name Here]; 
Database=[Insert DB Here]; 
Trusted_Connection=yes; 
""" 

db = odbc.odbc(CONNECTION_STRING) 
c = db.cursor() 
c.execute ('select foo from bar') 
rs = c.fetchall() 
for r in rs: 
    print r[0] 
+0

मैं पायोडबैक का एक बड़ा प्रशंसक हूं। यह एसक्यूएल सर्वर और कई अन्य डेटा स्रोतों के साथ भी उपयोग करना बेहद सरल और आसान है। – TimothyAWiseman

25

बाकी सब CPython है लगता है -> एसक्यूएल सर्वर साइड कवर किया। आप IronPython का उपयोग करना चाहते हैं, तो आप डेटाबेस के लिए बात करने के लिए मानक ADO.NET एपीआई का उपयोग कर सकते हैं:

import clr 
clr.AddReference('System.Data') 
from System.Data.SqlClient import SqlConnection, SqlParameter 

conn_string = 'data source=<machine>; initial catalog=<database>; trusted_connection=True' 
connection = SqlConnection(conn_string) 
connection.Open() 
command = connection.CreateCommand() 
command.CommandText = 'select id, name from people where group_id = @group_id' 
command.Parameters.Add(SqlParameter('group_id', 23)) 

reader = command.ExecuteReader() 
while reader.Read(): 
    print reader['id'], reader['name'] 

connection.Close() 

आप पहले से ही IronPython मिल गया है, तो आप कुछ और स्थापित करने की आवश्यकता नहीं है।

बहुत सारे दस्तावेज़ here और here उपलब्ध हैं।

+0

वह उदाहरण थोड़ा फूला हुआ लगता है। – graffic

+2

दुर्भाग्यवश, ADO.NET संबंधित पायथन डीबीएपीआई कोड की तुलना में थोड़ा अधिक वर्बोज़ है (और यह सामान्य रूप से .NET क्लास लाइब्रेरी का सच है)। लेकिन यह बहुत बुरा नहीं है, और डीबीएपीआई मॉड्यूल में लपेटने के लिए काफी आसान है। मैंने स्क्लेक्लेमी के साथ काम करने के लिए यह किया है। – babbageclunk

+0

बहुत अच्छा मुद्दा है, लेकिन यह मत भूलना कि एसएमओ एक और विकल्प है। – TimothyAWiseman

3

http://adodbapi.sourceforge.net/ या तो सीपीथन या आयरनपीथन के साथ उपयोग किया जा सकता है। मैं इसके साथ बहुत खुश हूं।

0

यदि आप सीपीथॉन के साथ त्वरित और गंदे तरीके चाहते हैं (3 के लिए भी काम करता है।एक्स अजगर):

स्थापित PYWIN32 आप स्थापित करने के बाद अजगर http://sourceforge.net/projects/pywin32/files/pywin32/

आयात निम्नलिखित पुस्तकालय: आयात ODBC

मेरे द्वारा बनाए गए एसक्यूएल सर्वर ODBC ड्राइवर प्राप्त करने के लिए निम्न विधि (यह नामकरण में थोड़ा अलग है Windows के अपने संस्करण पर निर्भर करता है, तो यह यह परवाह किए बिना मिल जाएगा):

def getSQLServerDriver(): 
    key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\ODBC\ODBCINST.INI") 
    sqlServerRegExp = re.compile('sql.*server', re.I | re.S) 

    try: 
     for i in range(0, 2048): 
      folder = winreg.EnumKey(key, i) 
      if sqlServerRegExp.match(folder): 
       return folder.strip() 
    except WindowsError: 
     pass 

नोट: यदि आप ऊपर फ़ंक्शन का उपयोग करें, तो आप भी इन दो पुस्तकालयों आयात करने के लिए की आवश्यकता होगी: WinRE ग्राम और फिर

तो फिर तुम के रूप में यहां बताए गए ODBC एपीआई 1 जानकारी का उपयोग: http://www.python.org/dev/peps/pep-0248/

आपका कनेक्शन इंटरफ़ेस स्ट्रिंग कुछ इस तरह दिखना चाहिए (यह मानते हुए आप ODBC ड्राइवर नाम प्राप्त करने के लिए मेरी उपरोक्त विधि का उपयोग कर रहे हैं, और यह

dbString = "Driver={SQLDriver};Server=[SQL Server];Database=[Database Name];Trusted_Connection=yes;".replace('{SQLDriver}', '{' + getSQLServerDriver() + '}') 

इस विधि कई नीचे पक्ष हैं: एक विश्वसनीय कनेक्शन) है। ओडीबीसी एपीआई 1 का समर्थन करने के कारण यह बेकार है, और एपीआई या ओडीबीसी चालक में कुछ मामूली बग हैं जो मैंने पार किया है, लेकिन यह विंडोज़ में सीपीथॉन के सभी संस्करणों में काम करता है।

2

PyPyODBC (http://code.google.com/p/pypyodbc) पीपीपी, आयरनपीथॉन और सीपीथन के तहत काम करता है।

This article पायथन में mssql तक पहुंचने का हैलो वर्ल्ड नमूना दिखाता है।

पीईपीओओडीबीसी के पास पाइपबैक के रूप में लगभग समान उपयोग होता है, क्योंकि इसे पाइपबैक मोउडल के पुन: लागू करने के रूप में देखा जा सकता है। चूंकि यह शुद्ध पायथन में लिखा गया है, यह आयरनपीथन और पायपी पर भी चला सकता है।

असल में, जब स्विच अपने मौजूदा लिपि में pypyodbc के लिए, आप यह कर सकते हैं:

#import pyodbc    <-- Comment out the original pyodbc importing line 

import pypyodbc as pyodbc # Let pypyodbc "pretend" the pyodbc 

pyodbc.connect(...)   # pypyodbc has 99% same APIs as pyodbc 

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

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