Недопустимое имя / номер переменной при привязке словаря - PullRequest
0 голосов
/ 29 апреля 2019

В настоящее время я получаю пару ошибок с моей вставкой, используя cx_Oracle для python 3.6

ORA-01036: illegal variable name/number

и

ORA-01745: invalid host/bind variable name

Вот мой код:

    def load_wp_sql(self, wp_dict):
        self.db.begin()
        cursor = self.db.cursor()
        sql = """INSERT INTO work_package_work_table
                 (CONTROL_ACCOUNT, CONTROL_MANAGER, WP_MANAGER,
                  TITLE, WORK_STATEMENT, TYPE,
                  RISK_MITIGATION_SCOPE)
                 VALUES
                 (:control_account, :cam, :wp_manager,
                  :wp_title, :statement_of_work,
                  :wp_type, risk_mitigation_scope)
              """ 
        try:
            for wp in wp_dict:
                cursor.prepare(sql)
                cursor.execute(None, wp)
            self.db.commit()
        except cx_Oracle.DatabaseError as e:
            self.db.rollback()

Это словарь, который я пытаюсь связать, он передается в функцию как объект-генератор.

{
  'cam': 'CA Manager', 
  'control_account': 'W80.11.11.01.LL', 
  'risk_mitigation_scope': 'No', 
  'statement_of_work': 'For setup and maintainance of of the W80 EVMS Tools', 
  'wp_manager': 'cohagan1', 
  'wp_title': 'EVMS Tools', 
  'wp_type': 'Discrete'
}

Я просмотрел довольно много сообщений от stackoverflow: Переменные связывания Python cx_Oracle

Ошибка базы данных: ORA-01036: недопустимое имя / номер переменной

а также их документация: https://www.oracle.com/technetwork/articles/dsl/prez-python-queries-101587.html

Я почти уверен, что упускаю что-то простое, но, кажется, не могу его найти.

...