私は Python を初めて使用し、この現在のプロジェクトまで SQL Server と XML 解析を実際に操作したことがありません (最善のアプローチでさえないかもしれません)。簡単に言えば、私の IT チームは非常に未処理であり、データを (XML から解析して) サンドボックス テーブルに入れる必要があります。
属性 [xx]001 から [xx]025 を含む XML のセグメントがあります。解析する XML ごとに、これらの属性のすべてが含まれているわけではありません。したがって、考えられるすべての属性のループを繰り返し、結果をリストに追加します。すべての属性が各 XML に含まれているわけではないため、それぞれを表現しようとすると、noneTypes が発生する可能性があります。NULLに変換する必要があるSQL挿入ステートメントを作成するまでは問題ありません。おそらくこれを処理するための非常に簡単な方法がいくつかありますが、私の初心者のステータスが私の進歩を妨げています. コードの関連部分は次のとおりです...
たぶん、一般的にそれを行うためのより良い方法はありますか?私も同様に制限に達する前に、sqlListが非常に大きくなる可能性があることを懸念しています。
#this list contains Nones
sqlList = (", ".join(map(repr,appendedList)))
#the Nones are an issue when I get to here
curs.execute("USE Sandbox INSERT INTO myTable VALUES (%s)" % (sqlList))
curs.commit()
sqlList がどのように見えるかの例を次に示します。
'20_2014', '20_2014_3/25/2015 2:01 PM', 'FBR', 'A', '0', '0', '3', '1', '134', None, None, '0', None, '0', '0', '0', '0', '0', None, None, '2', None, None, None, None
次のエラー メッセージが表示されます。
pypyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'None'.")