0

一時テーブルが存在することを確認しようとしています。存在する場合は、pyodbc を使用して SQL Server にドロップします。クエリは管理スタジオで機能しますが、Python ではエラーが発生します

以前の SQL はクエリではありませんでした

cnxn = pyodbc.connect('APP=MyApp;DRIVER={SQL Server Native Client 10.0};SERVER=powerapp6-WRON;DATABASE=ICP;DSN=myserver;Trusted_Connection=yes')
cursor = cnxn.cursor()
cnxn.commit()

for mc in range(0,3,1):
    speardata =  (""" if object_id('tempdb..#tempCSID') is not null
    begin
        drop table #tempCSID
    end
    create table #tempCSID (csid int)
    insert into #tempCSID (csid)
    select top 500 [CSID]
    from  [ICP].[dbo].[CSID]
    order by newid()
    SELECT [ICP].[dbo].[CSunit_L].[CSID] ,[Nitrogen] ,[Incorp0] ,[Incorp200] ,[yield] ,[xdays] ,[accum_rain] ,[avg_maxt]
          ,[avg_mint] ,[accum_radn] ,[xgdays] ,[accum_g_rain] ,[avg_g_maxt] ,[avg_g_mint] ,[accum_g_radn] ,[effrain_g] ,[xshdays]
          ,[accum_sh_rain] ,[avg_sh_maxt] ,[avg_sh_mint] ,[accum_sh_radn] ,[effrain_sh]
    FROM [ICP].[dbo].[CSunit_L]
    inner join #tempCSID 
    on [ICP].[dbo].[CSunit_L].[CSID] = #tempCSID.csid and [ICP].[dbo].[CSunit_L].[Nitrogen] < 201
    """)
    ndata =  np.array(cursor.execute(speardata).fetchall() )

tempdbデータベースとは別の場所にあるため、最初の 2 行の cnxn 設定と関係があるのICPでしょうか?

4

1 に答える 1

1

エラーpyodbc.ProgrammingError: No results. Previous SQL was not a queryは、SQL の構文の問題を示しています。この場合、複数の DDL および DML クエリが存在し、行末記号 ( ) だけで区切られています\n

あなたの場合、一時テーブルの挿入後cursor.execute(...)に確実に、各ステートメントを個別の呼び出しに分割することをお勧めします。connection.commit()次に、を実行して、select以前に試みたように numpy 配列にデータを入力します。

于 2012-08-24T12:52:53.760 に答える