2017-06-02 20 views
0

Python來探索SQL服務器

有沒有一種方法,我可以使用Python做到這一點?

我創建了一個腳本,讓我連接到服務器

import adodbapi 
conn = adodbapi.connect("PROVIDER=SQLOLEDB;Data Source=<location>;Database=<databaseName>; \ 
     trusted_connection=yes;") 
cursor = conn.cursor() 

<missing code here> 

cursor.close() 
conn.close() 

這個腳本運行正常,所以我假定連接產生的罰款。

我希望能創造這樣的事情

for table in sqlserver: 
    for row in table: 
     print row["name"] 

或是否有可能探索表作爲一個字典?

我不要求任何人都可以寫這樣的代碼對我來說,但任何幫助,讓我這樣做,將不勝感激,乾杯


感謝您的答覆 - 我已經找到了解決我問的問題。

要獲取發現用下面的代碼替換<missing code here>表的列表運行良好。

tables = conn.get_table_names() 
#prints all table names 
for table in tables: 
    print table 

一旦我挑選的表(在本例中稱爲「份」),那麼我可以在每列中查看數據。我已經使用.fetchone()函數只需拉一行。

sql = r'SELECT * FROM Parts' 
cursor.execute(sql) 
rows = cursor.fetchone() 
rownames = cursor.columnNames 

for rowname in rownames: # iterate through all rows 
     print str(rowname) + "  " + str(rows[rowname]) 
+1

爲什麼mysql的標籤,如果你指的SQL服務器 – Jens

+0

可能重複的[連接到使用Python的Microsoft SQL Server(https://stackoverflow.com/questions/33725862/connecting-to-microsoft-sql-server-using-python) –

+1

另外,這的確是一個關於ADO本身的問題,而不是Python或adodbapi。一旦你連接到通過ADO服務器,可以運行任何你喜歡的查詢,包括返回的數據庫列表如下解釋:https://blogs.technet.microsoft.com/heyscriptingguy/2006/09/14 /我怎麼能得到一個所有的數據庫在一個SQL服務器計算機上/ –

回答

0

這聽起來像你想要做這樣的事情:

sql = 'SELECT * FROM table' 
crsr.execute(sql) 
rows = crsr.fetchone() 
for row in rows: # iterate through all rows 
    name = row[0] # replace 0 with row containing names 

看到這裏的文檔瞭解更多信息:http://adodbapi.sourceforge.net/quick_reference.pdf

+0

謝謝你的回答,當我運行該腳本雖然我得到一個錯誤,你碰巧知道我做錯了嗎?乾杯 – CodeCupboard

+0

只是爲了確定,我認爲你的桌子實際上並不叫做桌子?如果不是,你顯然需要替換你的桌子的名字。錯誤說'關鍵字'表'附近有錯誤的語法,所以你可能忘了修改它? –

+0

我正在使用「表」,我的表不稱爲表。謝謝 – CodeCupboard