使用python在PostgreSQL中添加uuid列

问题描述

我在Excel中有4张纸,我将其导入到Postgresql中。
我想在表格中添加UUID列
我已经在每个表中创建了UUID列,但是我已经
不知道如何将数据导入该列
请帮忙
uuid可能会使用循环自动递增

from sqlalchemy import create_engine
engine = create_engine('postgresql+psycopg2://postgres:xxxxx@localhost:xxxx/my_xxxx')

def sheets(data,con,file):
        if(data=='Sheet1'):
            df1 = pd.read_excel(file,'Sheet1')
            df1.to_sql(name='table1',con=engine,if_exists='append',index=False)
           
        elif(data=='Sheet2'):
            df2=pd.read_excel(file,'Sheet2')
            df2.to_sql(name='table2',index=False)

        elif(data=='Sheet3'):
            df3=pd.read_excel(file,'Sheet3')
            df3.to_sql(name='table3',index=False)

        elif(data=='Sheet4'):
            df4 = pd.read_excel(file,'Sheet4')
            df4.to_sql(name='table4',index=False)


xls = pd.ExcelFile('postgre.xlsx')
with pd.ExcelFile('postgre.xlsx') as  xls:
    for sheet_name in xls.sheet_names:
       sheets(sheet_name,engine,xls)

解决方法

请勿导入UUID,而让Postgres通过在表上定义默认值来生成它。您将需要安装扩展名pgcryptouuid-ossp。然后

for pgcrypto:
alter table table_name alter column uuid_column_name set default generate_random_uuid();

for uuid-ossp: 
alter table table_name alter column uuid_column_name set default uuid_generate_v4();

这两种方法都可能要求您指定要上传的列,因为您没有在电子表格中包含uuid列。那应该没什么大问题。 (恕我直言)您还是应该这样做。