パンダデータフレームからのmsアクセスで複数の行を更新する方法

カロベト

pandasデータフレームの列からこの更新クエリを実行しようとしています。

sql = "UPDATE tblhis_ventas SET portabilidad = '%s' WHERE (contrato = '%s' and estado = '%s') " % (
    df['portabilidad'], df['contrato'], df['estado']
)

cursor.execute(sql)

クエリは実行されず、エラーは表示されません。

私のデータフレームは次のようになります。

データテーブルのスクリーショット

完璧

残念ながら、MS Access(具体pandas.to_sql()的にはGUI.exeプログラムではなくディスクレベルのJet / ACEエンジン)はSQLAlchemyでサポートされていないため、理想的にはデータベースの一時テーブルにデータフレームをプッシュしてUPDATE final INNER JOIN temp ...クエリを実行し、更新することができます。最終テーブル。行間で繰り返すよりもはるかに高速なルートです。

幸い、MSAccessのJet / ACE Engineは、ファイルのパスを指定してからcsvファイルの名前を指定するテーブルであるかのようにcsvファイルをクエリできます。したがって、データフレームを_csvエクスポートし、Make-Tableクエリを使用して一時テーブルを作成し、最後に更新結合クエリを実行することを検討してください以下try/exceptは、存在する場合にテーブルを削除するために使用されます(IF EXISTSコマンドはMS Access SQLでは使用できないため)。

df.to_csv('C:\Path\To\CSV\Output.csv', index=False)

try:
   cursor.execute("SELECT * INTO tblhis_ventas_Temp" +\
                  " FROM [text;HDR=Yes;FMT=Delimited(,);Database=C:\Path\To\CSV].Output.csv")
   conn.commit()

   cursor.execute("UPDATE tblhis_ventas f INNER JOIN tblhis_ventas_Temp t" + \
                   " ON f.contrato = t.contrato AND f.estado = t.estado" + \
                   " SET f. portabilidad = t.portabilidad")
   conn.commit()

except Exception as e:    
    if 'already exists' in str(e):
        cursor.execute("DROP TABLE tblhis_ventas_Temp")
        conn.commit()
    else:
        print(e)

cursor.close()
conn.close()

いいえ、UPDATEcsvは読み取り専用で更新可能なレコードセットではないためクエリでCSVファイルを直接使用することはできません(一時テーブルプロセスをバイパスします)興味深いことに、CSVはで使用できますINSERT...SELECT

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Python:パンダのデータフレームをエクスポートするときにExcelで複数行のセルを作成する方法

分類Dev

複数の列からパンダのデータフレーム行の値のリストを作成する

分類Dev

パンダデータフレームからタプルの複数のリストを作成する方法

分類Dev

パンダのデータフレームから別の複数の行に1行をコピーする

分類Dev

ジュリア:データフレームからインデックスで複数の行を削除する方法

分類Dev

パンダのデータフレームでセルを複数の行に分割する

分類Dev

パンダの多重指数データフレームの特定の行にアクセスする方法

分類Dev

パンダの複数のソースからの複数のデータフレームを連結する方法

分類Dev

パンダのデータフレームからセルを抽出する方法

分類Dev

複数のdivクラス内からパンダデータフレームにデータをスクレイピングする

分類Dev

複数の列に基づいてパンダデータフレームから行を削除する

分類Dev

パンダを使用してデータフレームから複数の列を削除する方法は?

分類Dev

異なる長さのパンダデータフレームから複数の行をシフトする方法はありますか?

分類Dev

異なる長さのパンダデータフレームから複数の行をシフトする方法はありますか?

分類Dev

パンダでデータフレームの複数の列スライスを取得する方法

分類Dev

パンダデータフレームの前の行のデータにアクセスするにはどうすればよいですか?

分類Dev

パンダデータフレームから複数の番号を抽出する方法

分類Dev

キーでパンダのグループ化データフレームにアクセスする方法

分類Dev

複数のディレクトリから単一のパンダデータフレームに複数の.parquetファイルを読み取る方法は?

分類Dev

マルチインデックスを使用してパンダデータフレームの単一行を複数行に合計する方法は?

分類Dev

パンダデータフレームの複数の行を1つの行に連結する方法

分類Dev

パンダデータフレームの複数の行を1つの行に連結する方法

分類Dev

パンダのデータフレームの行のサブセットから重複を削除する方法は?

分類Dev

パンダのデータフレーム行を複数の列値でフィルタリングする

分類Dev

パンダのデータフレームから行のリストをドロップする方法は?

分類Dev

パンダのデータフレームでインデックスをリセットする方法は?

分類Dev

複数のページからパンダのデータフレームに情報をWebスクレイピングする

分類Dev

別の列からパンダのデータフレーム列で一致するアイテムの数を数える方法は?

分類Dev

パンダのデータフレーム行を複数の行に変換する方法

Related 関連記事

  1. 1

    Python:パンダのデータフレームをエクスポートするときにExcelで複数行のセルを作成する方法

  2. 2

    複数の列からパンダのデータフレーム行の値のリストを作成する

  3. 3

    パンダデータフレームからタプルの複数のリストを作成する方法

  4. 4

    パンダのデータフレームから別の複数の行に1行をコピーする

  5. 5

    ジュリア:データフレームからインデックスで複数の行を削除する方法

  6. 6

    パンダのデータフレームでセルを複数の行に分割する

  7. 7

    パンダの多重指数データフレームの特定の行にアクセスする方法

  8. 8

    パンダの複数のソースからの複数のデータフレームを連結する方法

  9. 9

    パンダのデータフレームからセルを抽出する方法

  10. 10

    複数のdivクラス内からパンダデータフレームにデータをスクレイピングする

  11. 11

    複数の列に基づいてパンダデータフレームから行を削除する

  12. 12

    パンダを使用してデータフレームから複数の列を削除する方法は?

  13. 13

    異なる長さのパンダデータフレームから複数の行をシフトする方法はありますか?

  14. 14

    異なる長さのパンダデータフレームから複数の行をシフトする方法はありますか?

  15. 15

    パンダでデータフレームの複数の列スライスを取得する方法

  16. 16

    パンダデータフレームの前の行のデータにアクセスするにはどうすればよいですか?

  17. 17

    パンダデータフレームから複数の番号を抽出する方法

  18. 18

    キーでパンダのグループ化データフレームにアクセスする方法

  19. 19

    複数のディレクトリから単一のパンダデータフレームに複数の.parquetファイルを読み取る方法は?

  20. 20

    マルチインデックスを使用してパンダデータフレームの単一行を複数行に合計する方法は?

  21. 21

    パンダデータフレームの複数の行を1つの行に連結する方法

  22. 22

    パンダデータフレームの複数の行を1つの行に連結する方法

  23. 23

    パンダのデータフレームの行のサブセットから重複を削除する方法は?

  24. 24

    パンダのデータフレーム行を複数の列値でフィルタリングする

  25. 25

    パンダのデータフレームから行のリストをドロップする方法は?

  26. 26

    パンダのデータフレームでインデックスをリセットする方法は?

  27. 27

    複数のページからパンダのデータフレームに情報をWebスクレイピングする

  28. 28

    別の列からパンダのデータフレーム列で一致するアイテムの数を数える方法は?

  29. 29

    パンダのデータフレーム行を複数の行に変換する方法

ホットタグ

アーカイブ