bulk_insert не вставляет значения в пустые поля - PullRequest
0 голосов
/ 13 февраля 2019

op.bulk_insert () не вставляет никаких значений в поля, помеченные как «nullable = True», но корректно вставляет данные во все остальные поля.

Я знаю, что bulk_insert () работает иявляется допустимым, потому что он успешно вставляет в другие таблицы и событие в ту же таблицу, что и таблица с полями, допускающими обнуляемость, но он только вставляет данные в поля, которые не обнуляются.

Так что в этом случаеполя id, section_id, order, type, headline и is_required заполняются, но поля параметров и описания остаются пустыми.

Единственное отличие, которое я вижу между этими полями и остальными, заключается в том, чтоих определяют как обнуляемые.

def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
    question = op.create_table('question',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('application_form_id', sa.Integer(), nullable=False),
    sa.Column('section_id', sa.Integer(), nullable=False),
    sa.Column('type', sa.String(length=25), nullable=False),
    sa.Column('description', sa.String(), nullable=True),
    sa.Column('order', sa.Integer(), nullable=False),
    sa.Column('headline', sa.String(), nullable=False),
    sa.Column('options', sa.JSON(), nullable=True),
    sa.Column('is_required', sa.Boolean(), nullable=False),
    sa.ForeignKeyConstraint(['application_form_id'], ['application_form.id'], ),
    sa.ForeignKeyConstraint(['section_id'], ['section.id'], ),
    sa.PrimaryKeyConstraint('id'),
    )

    seed_question_data(question)

def seed_question_data(question):
op.bulk_insert(question,
[

    {
        'id': 5,
        'application_form_id': 1,
        'section_id': 2,
        'type': 'long_text',
        'headline': 'headline 1',
        'description': 'Maximum 80 words.',
        'order': 4,
        'is_required': True       
    },
    {
        'id': 6,
        'application_form_id': 1,
        'section_id': 2,
        'type': 'long_text',
        'headline': 'headline 2',
        'description': 'Maximum 150 words.',
        'order': 5,
        'is_required': False       
    },
    {
        'id': 7,
        'application_form_id': 1,
        'section_id': 2,
        'type': 'file',
        'headline': 'headline 3',
        'description': 'description 3',
        'order': 6,
        'is_required': True       
    },
    {
        'id': 8,
        'application_form_id': 1,
        'section_id': 2,
        'type': 'multi-choice',
        'headline': 'headline 4',
        'description': 'description 4' ,
        'order': 7,
        'is_required': True,
        'options': [
            {'selection': 'Yes'},
            {'selection': 'No'}
        ]     
    }

1 Ответ

0 голосов
/ 14 февраля 2019

Круто, так что похоже, что хотя поле можно обнулять, вам все равно нужно пропустить тип «None», если вы хотите оставить его пустым.

Итак

    {
    'id': 5,
    'application_form_id': 1,
    'section_id': 2,
    'type': 'long_text',
    'headline': 'headline 1',
    'description': 'Maximum 80 words.',
    'order': 4,
    'is_required': True       
}

Становится

    {
    'id': 5,
    'application_form_id': 1,
    'section_id': 2,
    'type': 'long_text',
    'headline': 'headline 1',
    'description': 'Maximum 80 words.',
    'order': 4,
    'description': None,
    'is_required': True,
    'options': None       
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...