我試圖運行從鐵蟒蛇一個存儲過程,但有麻煩的設置將CommandType:IronPython SqlClient CommandType?
import clr
clr.AddReference('System')
clr.AddReference('System.IO')
clr.AddReference('System.Data')
from System import Console as cns
from System.Data import SqlClient as sql
我測試代碼,SQL連接和運行一個簡單的選擇查詢,以確認我可以得到一個工作方面,所以這就是傳入該功能爲「」騙子'
def get_cols_for(con, table):
cols = {}
cmd = sql.SqlCommand("sp_columns", con)
cmd.Parameters.Add(sql.SqlParameter("@table_name", "EQUIPMENT"))
sp = sql.SqlCommand.CommandType.StoredProcedure
rdr = cmd.ExecuteReader()
while rdr.Read():
cols[str(rdr[3])]=(str(rdr[5]),int(rdr[7])) # ColumnName @ 3, TypeName @ 5
rdr.Close()
return cols
智能感知暗示的StoredProcedure爲自動一的CommandType成員,所以我敢肯定,它實際上是有,但是當我運行這段代碼,我得到以下投訴:
{ 「 'getset_descriptor' 對象有沒有屬性 '的StoredProcedure'」}
當我執行行SP = sql.SqlCommand.CommandType.StoredProcedure
一個人如何去設置的CommandType?
順便說一句,如果我只是用這種形式,它的工作原理確定:
cmd = sql.SqlCommand("exec sp_columns @table_name='%s'" % table, con)
是的,謝謝tobsen,我曾嘗試從System.Data.SqlCommand中導入CommandType,因爲它出現在該庫中,但它確實以您導入它的方式工作。順便說一句,CommandText由SqlCommand構造函數設置,所以不需要單獨設置它。我可以說cmd = sql.SqlCommand(con),然後將其設置爲下一步,例如cmd.CommandText =「sp_columns」。 –