2011-06-06 85 views
0

我正在寫這個簡單的代碼來顯示pdf和其他格式的圖表,同時收集要從mysql數據庫中顯示的數據。 該代碼運行沒有錯誤但尚未生成文件。請幫忙。Reportlab文件生成中的問題

from rlextra.graphics.guiedit.datacharts import DataAwareDrawing, DataSource, ODBCDataSource, DataAssociation 

from reportlab.graphics.shapes import _DrawingEditorMixin 

from reportlab.graphics.charts.lineplots import GridLinePlot 

class Ok(_DrawingEditorMixin,DataAwareDrawing): 

       def __init__(self,width=800,height=800,*args,**kw): 
           DataAwareDrawing.__init__(self,width,height,*args,**kw) 
           self._add(self,GridLinePlot(),name='plot',validate=None,desc=None) 
           self.height   = 125 
           self.width   = 300 
           self.plot.height   =125 
           self.plot.width   = 300 
           self.plot.x    = 50 
           self.plot.y    = 50 
           self.dataSource  = ODBCDataSource() 
           self.dataSource.driver     = 'mysql' 
           self.dataSource.user      = 'root' 
           self.dataSource.password     = 'soumya' 
           self.dataSource.name      = 'fundrep' 
           self.dataSource.sql      = 'SELECT fund_id, periodEnd, fundReturn,indexReturn FROM fundrep_monthlyreturnseriess ORDER BY fund_id, periodEnd' 
           self.outDir   = 'output' 
           self.fileNamePattern = 'pleaserun' 
           self.formats   = ['pdf', 'eps', 'gif'] 
           self.dataSource.associations.size  = 2 
           self.dataSource.associations.element00 = DataAssociation(column=0, target='chartId', assocType='scalar') 
           self.dataSource.associations.element01 = DataAssociation(column=[(1,2),(1,3)], target='plot.data', assocType='tmatrix') 

if __name__=="__main__": #NORUNTESTS 

       Ok().go() 

回答

1

假設這是你所有的代碼,這個問題似乎是你永遠不會真正繪製到ReportLab畫布爲了它被寫出到一個文件。一般來說,ReportLab的工作方式是:

  1. 創建畫布以繪製文檔。
  2. 繪製文檔(即創建頁面,將東西放在頁面上等)。
  3. 將文檔寫入文件。

由於沒有發生在您的代碼中,我不認爲ReportLab會放出任何東西。