postgresql表的数据帧

2024-06-02 06:50:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要向我们的postgresql表中插入一个数据帧,但是当向我们的postgresql表发送数据帧时,由于某种原因,它会更改行的顺序。下面的代码用于将数据帧发送到我们的postgresql表

def postgresql(df, table):

    # Connect to the PostgreSQL server
    engine = create_engine(f'postgresql+psycopg2://{username}:{password}@{server}:5432/{database}')
    df.to_csv("test.csv")
    # Send dataframe to PostgreSQL table in database. Replace, if already exist
    df.to_sql(table, engine, if_exists='replace', index=False)

    return df

df.to_csv("test.csv")创建一个csv文件名“test”,该csv文件如下所示。请注意,标记是按顺序排列的(而不是按字母顺序排列),数字是根据标记按升序排列的:

     number   name        address         city           token
0    1        Alarm       oxstreet 12     Reading        eng
1    2        Computer    pentaroad 4     Oxford         eng
2    3        Music       thisstreet 2    London         eng
3    4        School      schoolroad 45   London         eng
4    1        Hospital    madstreet 24    Manchester     Owx
5    2        Bowling     placestreet 5   Birmingham     Owx
6    1        Hotel       cemstreet 24    Liverpool      JOC
7    2        Paintball   shootstreet 2   Manchester     JOC
8    3        Center      examstreet 24   Bristol        JOC
9    4        Computer    comproad 24     Brigthon       JOC

虽然,df.to_sql(table, engine, if_exists='replace', index=False)将以下内容上载到sql表:

     number   name        address         city           token
0    1        Alarm       oxstreet 12     Reading        eng
1    3        Center      examstreet 24   Bristol        JOC
2    2        Computer    pentaroad 4     Oxford         eng
3    3        Music       thisstreet 2    London         eng
4    4        School      schoolroad 45   London         eng
5    1        Hospital    madstreet 24    Manchester     Owx
6    2        Bowling     placestreet 5   Birmingham     Owx
7    1        Hotel       cemstreet 24    Liverpool      JOC
8    2        Paintball   shootstreet 2   Manchester     JOC
9    4        Computer    comproad 24     Brigthon       JOC

上面是表,可以在postgres表上看到,这对我来说非常奇怪,因为在插入到postgres表之前的dataframe看起来与此不同,所以如何以及为什么在postgres表上更改。谁有这方面的经验?也许,我应该尝试另一种插入postgres表的方法。我该怎么做


Tags: csvtotestdfifpostgresqltablepostgres