2012-07-12 4 views
16

का उपयोग कर SQL से डेटा पुनर्प्राप्त करना मैं पाइडबैक का उपयोग कर SQL सर्वर से डेटा पुनर्प्राप्त करने का प्रयास कर रहा हूं और इसे पायथन का उपयोग करके तालिका में प्रिंट कर रहा हूं। हालांकि, मैं केवल कॉलम नाम और डेटा प्रकार और उस तरह की चीजें पुनर्प्राप्त कर सकता हूं, कॉलम की प्रत्येक पंक्ति में वास्तविक डेटा मान नहीं।पीओडीबीसी

मूल रूप से मैं एक एक्सेल शीट को दोहराने की कोशिश कर रहा हूं जो सर्वर डेटा पुनर्प्राप्त करता है और इसे तालिका में प्रदर्शित करता है। मुझे सर्वर से कनेक्ट करने में कोई समस्या नहीं है, बस मुझे लगता है कि तालिका में जाने वाले वास्तविक डेटा को नहीं लगता है।

import pyodbc 
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=SQLSRV01;DATABASE=DATABASE;UID=USER;PWD=PASSWORD') 
cursor = cnxn.cursor() 

cursor.execute("SELECT * FROM sys.tables") 
tables = cursor.fetchall() 
#cursor.execute("SELECT WORK_ORDER.TYPE,WORK_ORDER.STATUS, WORK_ORDER.BASE_ID, WORK_ORDER.LOT_ID FROM WORK_ORDER") 

for row in cursor.columns(table='WORK_ORDER'): 
    print row.column_name 
    for field in row: 
     print field 

हालांकि इसी का परिणाम बस मुझे 'कोई नहीं है और है कि नहीं कर रहे तरह बातें' तालिका नाम, स्तंभ नाम है, और कुछ पूर्णांकों और जैसी चीज़ें प्राप्त होती:

यहाँ मेरी कोड का एक उदाहरण है मेरे लिए ब्याज की टी:

STATUS_EFF_DATE 
DATABASE 
dbo 
WORK_ORDER 
STATUS_EFF_DATE 
93 
datetime 
23 
16 
3 
None 
0 
None 
None 
9 
3 
None 
80 
NO 
61 

तो मुझे सच में यकीन नहीं है कि मैं अपनी तालिका को भरने के लिए मूल्य कहां प्राप्त कर सकता हूं। क्या यह तालिका = 'WORK_ORDER' में होना चाहिए, लेकिन क्या यह एक अलग तालिका नाम के तहत हो सकता है? क्या डेटा को प्रिंट करने का कोई तरीका है जिसे मैं अभी याद कर रहा हूं?

कोई सलाह या सुझावों की बहुत सराहना की जाएगी।

+0

क्यों न केवल 'कर्सर.एक्सक्यूट (' WORK_TABLE से चुनें *) चलाएं? –

उत्तर

29

आप बहुत करीब हैं!

import pyodbc 
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=SQLSRV01;DATABASE=DATABASE;UID=USER;PWD=PASSWORD') 
cursor = cnxn.cursor() 

cursor.execute("SELECT WORK_ORDER.TYPE,WORK_ORDER.STATUS, WORK_ORDER.BASE_ID, WORK_ORDER.LOT_ID FROM WORK_ORDER") 
for row in cursor.fetchall(): 
    print row 

("कॉलम()" फ़ंक्शन नामित तालिका में कॉलम के बारे में मेटा-डेटा एकत्र करता है, वास्तविक डेटा के विपरीत)।

+0

ओह धन्यवाद! यह सिर्फ चाल है! आपकी सभी तत्काल सहायता के लिए धन्यवाद! – Mike

5

तालिका में संग्रहीत वास्तविक डेटा प्राप्त करने के लिए, आपको fetch ...() फ़ंक्शंस का उपयोग करना चाहिए या कर्सर को इटरेटर के रूप में उपयोग करना चाहिए (यानी "कर्सर में पंक्ति के लिए" ...)। यह documentation में वर्णित है:

cursor.execute("select user_id, user_name from users where user_id < 100") 
rows = cursor.fetchall() 
for row in rows: 
    print row.user_id, row.user_name