我想從我的Python代碼中使用sqlalchemy調用SQL Server存儲過程。我發現,python代碼沒有提出任何錯誤,並且存儲過程沒有執行。Python到SQL Server存儲過程
示例代碼:
def SaveData(self, aScrapeResult):
sql = "EXECUTE mc.SaveFundamentalDataCSV @pSource='%s',@pCountry='%s',@pOperator='%s',@pFromCountry='%s',@pFromOperator='%s',@pToCountry='%s',@pToOperator='%s',@pSiteName='%s',@pFactor='%s',@pGranularity='%s',@pDescription='%s',@pDataType='%s',@pTechnology = '%s',@pcsvData='%s'"
# Need to convert the data into CSV
util = ListToCsvUtil()
csvValues = util.ListToCsv(aScrapeResult.DataPoints)
formattedSQL = sql % (aScrapeResult.Source ,aScrapeResult.Country,aScrapeResult.Operator ,aScrapeResult.FromCountry ,aScrapeResult.FromOperator ,aScrapeResult.ToCountry ,aScrapeResult.ToOperator ,aScrapeResult.SiteName ,aScrapeResult.Factor ,aScrapeResult.Granularity ,aScrapeResult.Description ,aScrapeResult.DataType ,aScrapeResult.Technology ,csvValues)
DB = create_engine(self.ConnectionString)
DB.connect()
result_proxy = DB.execute(formattedSQL)
results = result_proxy.fetchall()
考試格式化SQL的產生以下命令
EXECUTE mc.SaveFundamentalDataCSV @pSource='PythonTest', @pCountry='UK',
@pOperator='Operator', @pFromCountry='None', @pFromOperator='None',
@pToCountry='None', @pToOperator='None', @pSiteName='None', @pFactor='Factor',
@pGranularity='Hourly', @pDescription='Testing from python',
@pDataType='Forecast',@pTechnology = 'Electricity',
@pcsvData='01-Jan-2012 00:00:00,01-Feb-2012 00:15:00,1,01-Jan-2012 00:00:00,01-Feb-2012 00:30:00,2';
的各種版本和使用的軟件如下: SQL Server 2008 R2的 的Python 2.6.6 SQLAlchemy 0.6.7
我測試了我的存儲過程,通過調用它直接在SQL Server Management Studio中使用相同的參數並沒有問題。
值得指出的是,Python版本和SQL服務器版本是不可更改的。我對sqlalchemy沒有強烈的忠誠,並願意接受其他建議。
任何意見將不勝感激,更多的信息可以提供,如果需要的話。
我已經使用sqlalchemy的text()對象修復了這個問題。作爲一個noob,我被禁止回答我自己的問題7個小時。一旦該時間到期,將發佈完整的解決方案。 – GinjaNinja