使用pandas或psycopg使用串行密钥插入数据?

使用pandas或psycopg使用串行密钥插入数据?,pandas,psycopg2,Pandas,Psycopg2,我有一个简单的维度表,它存储了来自多个文件的所有唯一维度 在博士后,我做了一个表格: CREATE TABLE dimension_purpose ( purpose_key SERIAL PRIMARY KEY, purpose text NOT NULL UNIQUE ); 现在,我正在尝试有效地将新行添加到此表中。我能够很容易地使用熊猫识别新的维度,但我在将它们插入此表时遇到了困难。我通常使用 def load_to_database(table_name, file_objec

我有一个简单的维度表,它存储了来自多个文件的所有唯一维度

在博士后,我做了一个表格:

CREATE TABLE dimension_purpose (
  purpose_key SERIAL PRIMARY KEY,
  purpose text NOT NULL UNIQUE
);
现在,我正在尝试有效地将新行添加到此表中。我能够很容易地使用熊猫识别新的维度,但我在将它们插入此表时遇到了困难。我通常使用

def load_to_database(table_name, file_object, header=True):
    fake_conn = sqlalchemy.create_engine(engine).raw_connection()
    fake_cur = fake_conn.cursor()
    sql = 'COPY {} FROM STDIN WITH CSV HEADER'.format(table_name)
    fake_cur.copy_expert(sql=sql, file=file_object)
    fake_conn.commit()
    fake_cur.close()
如果我尝试大容量复制,我会得到一个错误,即“purpose”不是一个整数,它试图将自身插入purpose\u键字段

将一列数据插入目的字段,然后自动更新串行目的密钥的最佳方法是什么


如果我的df只是一列,那么我可以用df.to_sql执行此操作吗?

您可以在复制命令中指定列,例如

COPY dimension_purpose (purpose) FROM STDIN WITH CSV HEADER