【问题标题】:adding column of uuid in postgresql using python使用python在postgresql中添加uuid列
【发布时间】:2021-01-07 13:21:13
【问题描述】:

我的 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', con=engine, if_exists='append', index=False)

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

        elif(data=='Sheet4'):
            df4 = pd.read_excel(file,'Sheet4')
            df4.to_sql(name='table4', con=engine, if_exists='append', 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)

【问题讨论】:

    标签: python excel pandas postgresql uuid


    【解决方案1】:

    不要导入 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 列。这应该不是什么大问题。 (恕我直言)无论如何你都应该这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 2014-07-26
      相关资源
      最近更新 更多