sql >> データベース >  >> RDS >> Mysql

pythonでpandasデータフレームからmysqlに列を追加できません

    すべてのデータを含む列を1つのステップでテーブルに追加することはできません。最初にDDLを実行するには、少なくとも2つの個別のステートメントを使用する必要があります(ALTER TABLE )およびDML秒(UPDATE またはINSERT ... ON DUPLICATE KEY UPDATE

    これは、NOT NULLの列を追加することを意味します 制約には3つのステップが必要です:

    1. null許容列を追加
    2. すべての行に値を列に入力します
    3. NOT NULLを追加します 列への制約

    または、「ダミー」のデフォルト値を使用することで、2つのステップで実行できます(「ダミー」の値を浮かび上がらせないように注意するか、意味のある/十分に文書化された値を使用してください):

    1. 列をNOT NULL DEFAULT ''として追加します (または、たとえば0を使用します 数値タイプの場合)
    2. すべての行に値を列に入力します

    オプションで、テーブルを再度変更して、DEFAULTを削除できます。 価値。個人的には、最初の方法を好みます。これは、テーブルに無意味な値を導入せず、2番目のステップで問題が発生した場合にエラーをスローする可能性が高いためです。私はかもしれない 列が特定の自然なDEFAULTに適している場合は、2番目の方法を使用します 値と私はそれをファイナルテーブルの定義に保持する予定です。

    さらに、クエリを正しくパラメータ化していない。 パラメータ値をメソッドに渡す必要があります メソッド呼び出し内で文字列引数をフォーマットするのではなく。言い換えれば:

    cursor.execute("Query with %s, %s, ...", iterable_with_values)  # Do this!
    cursor.execute("Query with %s, %s, ..." % iterable_with_values)  # NOT this!
    



    1. データベース内のクラスの拡張

    2. AndroidSQliteがデータを更新しない

    3. mysql_client_encoding()と同等のPDO?

    4. MySQLUNION句