массовая вставка значений списка с помощью SQLAlchemy Core, но в моей базе данных нет идентификатора столбца - PullRequest
0 голосов
/ 04 июня 2019

Я пробовал массовую вставку, как показано ниже.Когда дело доходит до выполнения, он сообщает

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

Но, опять же, моя база данных не имеет идентификатора столбца.

Я установил свой первичный ключ как user_label book_label

Как мне убедиться, что настройка PrimaryKey Constraint позволяет мне не применять идентификатор для моей массовой вставки.

Запись массовой вставки не требует от нас частной автоматической генерации первичного идентификатора для вставки, верно?

Вот моя работа:

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) }])  
...