пытаясь перенести таблицу sql в новый формат, используя sqlalchemy. после нескольких строк происходит сбой одной, что выдает ошибку «ORA-00911: недопустимый символ» - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь перенести таблицу sql в новый формат, используя sqlalchemy. он работает для первых нескольких строк, но завершается с ошибкой на одной (той же самой каждый раз при запуске), что выдает ошибку:

sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) ORA-00911: invalid character
[SQL: INSERT INTO a_kyb_form_data (id, "uid", date_visited, unit, risk_level, risk_level_comments, risk_ctl_exists, risk_ctl_date, risk_ctl_comments, risk_ctl_resolved) VALUES (id_seq_2.nextval, :"uid", :date_visited, :unit, :risk_level, Omar%20has%20been%20the%20l
eader%20at%20transit%20132%20since%202015., :risk_ctl_exists, :risk_ctl_date, All%20items%20reviewed%20with%20Omar%20and%20his%20Tr.%20132%20leadership%20team%20today., :risk_ctl_resolved) RETURNING a_kyb_form_data.id INTO :ret_0]
[parameters: {'date_visited': datetime.date(2019, 11, 21), 'unit': '00132', 'risk_level': 0, 'risk_ctl_exists': 1, 'risk_ctl_date': '20191129', 'risk_ctl_resolved': 1, 'ret_0': <cx_Oracle.STRING with value [[], [], [], [], [], [], [], [], [], [], [], [], [], [], []
, [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []]>, '"uid"': 114}]
(Background on this error at: http://sqlalche.me/e/4xp6)

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

Код:

def migrate():
    regex = re.compile('[^a-zA-Z/]')
    old_forms = Old_Form.query.all()
    usernameList = []
    print(len(old_forms))
    i=0
    for old_form in old_forms:
        if old_form.formid[:5] == '99999':
            continue
        print("user")
        username = regex.sub('', parse.unquote(old_form.brl))
        user= User.query.filter_by(username=username).first()
        print("load old")
        formid = old_form.formid
        old_files = Old_File.query.filter_by(formid=formid).all()
        old_aoos = Old_Aoo.query.filter_by(formid=formid).all()
        old_ctls = Old_Ctl.query.filter_by(formid=formid).all()
        print("createnew")
        new_form = createForm(old_form, user, Old_Ctl.query.filter_by(formid=formid, risk_priority=True).first())
        print("appendUser")
        user.forms.append(new_form)
        print("sessionAdd")
        db.session.add(user)
        db.session.add(new_form)
        i+=1
        print(i)
        print("sessionCommit")
        db.session.commit()
        print("fin")

Большое спасибо!

1 Ответ

0 голосов
/ 25 февраля 2020

Оказалось, что я идиот и передавал неверный тип данных

Редактировать:

для ясности в моем объявлении для класса Form я передал ему строку, когда ему нужен тип Date

...