使用SQLAlchemy Core批量插入列表值,但是我的数据库没有列ID

时间:2019-06-04 15:25:21

标签: python sqlalchemy bulkinsert

我尝试了如下的批量插入。关于执行,它告诉

{"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 book_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) }])  

0 个答案:

没有答案