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

idxautoincrementを使用してpostgresqlsqlalchemyにデータフレームを挿入します

    これを行う1つの方法(多くの中で)は次のようになります:

    最大のIdを取得します それを変数に格納します(max_idと呼びましょう) ):

    select max(Id) from quotes;
    

    これができるようになりました:

    元のDF:

    In [55]: quote_df
    Out[55]:
          Adj_Close       Close        Date        High         Low        Open Symbol   Volume
    0    170.572764  173.990005  2015-12-31  175.649994  173.970001  175.089996    DIA  5773400
    1    172.347213  175.800003  2015-12-30  176.720001  175.619995  176.570007    DIA  2910000
    2     173.50403  176.979996  2015-12-29      177.25      176.00  176.190002    DIA  6145700
    ..          ...         ...         ...         ...         ...         ...    ...      ...
    213   88.252244   89.480003  2016-01-06   90.099998   89.080002   89.279999    IWN  1570400
    214   89.297697   90.540001  2016-01-05   90.620003       89.75   90.410004    IWN  2053100
    215   88.893319   90.129997  2016-01-04   90.730003   89.360001   90.550003    IWN  2540600
    
    [1404 rows x 8 columns]
    

    これで、インデックスをmax_idだけ増やすことができます。 :

    In [56]: max_id = 123456    # <-- you don't need this line... 
    
    In [57]: quote_df.index += max_id
    

    インデックスをIdとして設定します 列:

    In [58]: quote_df.reset_index().rename(columns={'index':'Id'})
    Out[58]:
              Id   Adj_Close       Close        Date        High         Low        Open Symbol   Volume
    0     123456  170.572764  173.990005  2015-12-31  175.649994  173.970001  175.089996    DIA  5773400
    1     123457  172.347213  175.800003  2015-12-30  176.720001  175.619995  176.570007    DIA  2910000
    2     123458   173.50403  176.979996  2015-12-29      177.25      176.00  176.190002    DIA  6145700
    ...      ...         ...         ...         ...         ...         ...         ...    ...      ...
    1401  123669   88.252244   89.480003  2016-01-06   90.099998   89.080002   89.279999    IWN  1570400
    1402  123670   89.297697   90.540001  2016-01-05   90.620003       89.75   90.410004    IWN  2053100
    1403  123671   88.893319   90.129997  2016-01-04   90.730003   89.360001   90.550003    IWN  2540600
    
    [1404 rows x 9 columns]
    

    これで、(index=Falseを指定してこのDFをPostgreSQLに書き込むことができるはずです。 )



    1. MS-Accessレコードセットおよびクラスモジュール

    2. あるMySQLサーバーから別のMySQLサーバーにデータを含むテーブルをコピーする

    3. Java / JDBCを使用して4000文字を超える文字列をOracleデータベースに格納するにはどうすればよいですか?

    4. mysqlデータベースのすべてのテーブルのすべてのフィールドを出力するにはどうすればよいですか?