使用SQLAlchemy Core大容量插入列表值,但我的数据库没有列id

2024-09-24 00:32:21 发布

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

我试过如下批量插入。当涉及到执行时,它告诉我们

{"error":{"name":"UnexpectedError","code":10000,"message":"(psycopg2.errors.NotNullViolation) null value in column \"id\" violates not-null constraint\nDETAIL:  Failing row c

但是,我的数据库没有列id

我已将主键设置为user_label{}

如何确保PrimaryKey约束的设置不必将ID应用于批量插入

记录批量插入不需要我们为插入自动生成主id,对吗

以下是我的工作:

def setup(request):
  engine = create_engine('postgresql://db4qigsdbfhsdfS:ajhfdiashdna@djhfbskf-db-1.c5fyydwyvna6.us-west-2.rds.amazonaws.com:5432/db4qigx5ivz8cjqsk3qlg8?sslmode=require' , echo=True)
  metadata = MetaData()  
  metadata.reflect(engine, only=['user_fav_books'])
  table = Table('user_fav_books', metadata, autoload=True, autoload_with=engine)

  engine.execute(table.insert(), [{'user_label': 'user02' , 'book_label': 'AKA6' , 'is_free_assigned': True , 
     'free_assign_date':  DT.date.today() + DT.timedelta(days=7*0) ,
     'free_assign_end_date': DT.date.today() + DT.timedelta(days=7*1) }, 
                            {'user_label': 'user02' , 'book_label': 'AKS6' , 'is_free_assigned': True , 
     'free_assign_date':  DT.date.today() + DT.timedelta(days=7*2) ,
     'free_assign_end_date': DT.date.today() + DT.timedelta(days=7*3) }, 
                            {'user_label': 'user02' , 'book_label': 'AK47' , 'is_free_assigned': True , 
     'free_assign_date':  DT.date.today() + DT.timedelta(days=7*4) ,
     'free_assign_end_date': DT.date.today() + DT.timedelta(days=7*5) }])  

Tags: idtruefreetodaydatedt批量days