Python Pandas to_sql、主キーを持つテーブルを作成する方法は?

patapouf_ai:

次のように、主キーを持つPandasのto_sql関数を使用してMySQLテーブルを作成したいと思います(通常、mysqlテーブルに主キーがあることは、一種の良いことです)。

group_export.to_sql(con = db, name = config.table_group_export, if_exists = 'replace', flavor = 'mysql', index = False)

ただし、これにより、主キーなしで(または、インデックスなしで)テーブルが作成されます。

ドキュメントでは、「index」パラメーターと組み合わせてインデックスを作成するために使用できるパラメーター「index_label」について言及していますが、主キーのオプションについては言及していません。

ドキュメンテーション

要件:

免責事項:この回答はより実験的で実用的ですが、言及する価値があります。

クラスにpandas.io.sql.SQLTableは名前付き引数がkeyあり、それにフィールドの名前を割り当てると、このフィールドが主キーになることがわかりました

残念ながら、この引数をDataFrame.to_sql()関数から転送することはできませんそれを使用するには:

  1. pandas.io.SQLDatabaseインスタンスを作成する

    engine = sa.create_engine('postgresql:///somedb')
    pandas_sql = pd.io.sql.pandasSQL_builder(engine, schema=None, flavor=None)
    
  2. 内部で作成されオブジェクトに渡されるpandas.io.SQLDatabase.to_sql()追加の*kwargs引数を使用して、それに類似し関数を定義pandas.io.SQLTableます(元のto_sql()メソッドをコピーして追加しました*kwargs):

    def to_sql_k(self, frame, name, if_exists='fail', index=True,
               index_label=None, schema=None, chunksize=None, dtype=None, **kwargs):
        if dtype is not None:
            from sqlalchemy.types import to_instance, TypeEngine
            for col, my_type in dtype.items():
                if not isinstance(to_instance(my_type), TypeEngine):
                    raise ValueError('The type of %s is not a SQLAlchemy '
                                     'type ' % col)
    
        table = pd.io.sql.SQLTable(name, self, frame=frame, index=index,
                         if_exists=if_exists, index_label=index_label,
                         schema=schema, dtype=dtype, **kwargs)
        table.create()
        table.insert(chunksize)
    
  3. SQLDatabaseインスタンスと保存するデータフレームでこの関数を呼び出します

    to_sql_k(pandas_sql, df2save, 'tmp',
            index=True, index_label='id', keys='id', if_exists='replace')
    

そして、私たちは次のようなものを得ます

CREATE TABLE public.tmp
(
  id bigint NOT NULL DEFAULT nextval('tmp_id_seq'::regclass),
...
)

データベース内。

PSもちろん猿-パッチをすることができDataFrameio.SQLDatabaseかつio.to_sql()機能利便性と、この回避策を使用します。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Python Pandas-各値が新しい列になる2つの値を持つピボットテーブルをアンスタックする方法は?

分類Dev

Python Pandas-キーの存在を使用して、辞書を含む列を持つデータフレームをフィルタリングする方法は?

分類Dev

Python Pandasでテーブルを作成するには、複数の値を取ります

分類Dev

Pandasを使用してPythonで異なる列を1つのテーブルに結合する方法

分類Dev

python / pandas / numpyを使用してSQLテーブルを行から列にピボットする方法

分類Dev

Python Pandas:不当な値を持つレコードを削除する方法

分類Dev

pandas DataFrame to_sql Python

分類Dev

BeautifulSoupを削った後、Pythonのリストからデータを抽出し、Pandasテーブルを作成する

分類Dev

Python Pandas は大きなテーブル列を分割します

分類Dev

pandasデータフレームをColumn == value列を持つテーブルに変換する方法は?

分類Dev

python pandas でテーブルを再構築する

分類Dev

Pythonでfile.sqlからテーブル名と主キーを出力する方法

分類Dev

Pythonでループを持つタプルを作成する方法

分類Dev

Python-Pandasのdescribe()テーブルを1つのステートメントで説明するにはどうすればよいですか?

分類Dev

pandas.read_sqlのparamsを使用して、日付の間にSQLiteテーブルからPythonパンダでデータをインポートする方法

分類Dev

pandas.read_sqlのparamsを使用して、日付の間にSQLiteテーブルからPythonパンダでデータをインポートする方法

分類Dev

Python Pandas:部分文字列を検索してテーブルを検索する

分類Dev

Python Pandasテーブルのテキスト値を一意のIDに置き換えるにはどうすればよいですか?

分類Dev

Python 3 pandas.DataFrameのテーブル形式を変更するにはどうすればよいですか?

分類Dev

複数のキーを持つテキストファイルからPython辞書を作成する

分類Dev

Pythonでネストされたループを持つテーブルを作成する

分類Dev

Python pandasデータフレームの[]括弧内の指定された文字列を抽出し、ブール値を使用して新しい列を作成する方法

分類Dev

Pythonでキューを持つワーカーのプールを使用する方法は?

分類Dev

Python Pandasを使用して、範囲基準で2つのテーブルを結合します

分類Dev

Python Pandas:列をグループ化して比較する方法

分類Dev

Pandasデータフレームを主キーでsqliteテーブルに追加する

分類Dev

特定の行に複数の列を持つPythonでHTMLテーブルを作成する

分類Dev

Python FBX SDK –キーフレームを持つモデルをスケーリングする方法は?

分類Dev

Python FBX SDK –キーフレームを持つモデルをスケーリングする方法は?

Related 関連記事

  1. 1

    Python Pandas-各値が新しい列になる2つの値を持つピボットテーブルをアンスタックする方法は?

  2. 2

    Python Pandas-キーの存在を使用して、辞書を含む列を持つデータフレームをフィルタリングする方法は?

  3. 3

    Python Pandasでテーブルを作成するには、複数の値を取ります

  4. 4

    Pandasを使用してPythonで異なる列を1つのテーブルに結合する方法

  5. 5

    python / pandas / numpyを使用してSQLテーブルを行から列にピボットする方法

  6. 6

    Python Pandas:不当な値を持つレコードを削除する方法

  7. 7

    pandas DataFrame to_sql Python

  8. 8

    BeautifulSoupを削った後、Pythonのリストからデータを抽出し、Pandasテーブルを作成する

  9. 9

    Python Pandas は大きなテーブル列を分割します

  10. 10

    pandasデータフレームをColumn == value列を持つテーブルに変換する方法は?

  11. 11

    python pandas でテーブルを再構築する

  12. 12

    Pythonでfile.sqlからテーブル名と主キーを出力する方法

  13. 13

    Pythonでループを持つタプルを作成する方法

  14. 14

    Python-Pandasのdescribe()テーブルを1つのステートメントで説明するにはどうすればよいですか?

  15. 15

    pandas.read_sqlのparamsを使用して、日付の間にSQLiteテーブルからPythonパンダでデータをインポートする方法

  16. 16

    pandas.read_sqlのparamsを使用して、日付の間にSQLiteテーブルからPythonパンダでデータをインポートする方法

  17. 17

    Python Pandas:部分文字列を検索してテーブルを検索する

  18. 18

    Python Pandasテーブルのテキスト値を一意のIDに置き換えるにはどうすればよいですか?

  19. 19

    Python 3 pandas.DataFrameのテーブル形式を変更するにはどうすればよいですか?

  20. 20

    複数のキーを持つテキストファイルからPython辞書を作成する

  21. 21

    Pythonでネストされたループを持つテーブルを作成する

  22. 22

    Python pandasデータフレームの[]括弧内の指定された文字列を抽出し、ブール値を使用して新しい列を作成する方法

  23. 23

    Pythonでキューを持つワーカーのプールを使用する方法は?

  24. 24

    Python Pandasを使用して、範囲基準で2つのテーブルを結合します

  25. 25

    Python Pandas:列をグループ化して比較する方法

  26. 26

    Pandasデータフレームを主キーでsqliteテーブルに追加する

  27. 27

    特定の行に複数の列を持つPythonでHTMLテーブルを作成する

  28. 28

    Python FBX SDK –キーフレームを持つモデルをスケーリングする方法は?

  29. 29

    Python FBX SDK –キーフレームを持つモデルをスケーリングする方法は?

ホットタグ

アーカイブ