Как исправить ошибку «TypeError: ожидание объекта строки или байта» в Python

1

Я хочу вставить строку в таблицу. Но я получил TypeError: ожидание строки или байтов объекта этой ошибки.

Трассировка (последний вызов был последним): файл "d:\Git\Repos\mavi\oracle_connection.py", строка 19, в c.prepare(QUERY, {"expr": expr, "expr2": expr2}) TypeError: ожидающий объект строки или байта

import cx_Oracle
dsn_tns = cx_Oracle.makedsn(***)
conn = cx_Oracle.connect(***)
c = conn.cursor()

expr = bytes('', 'utf-8')
expr2 = bytes('ML_TEST', 'utf-8')

QUERY = '''
    INSERT INTO dev_log (LOG, SQ_DEV_LOG_ID, LF_TEKLIF_WS, PACKAGE BODY, LINE_NO)
    VALUES
    (:expr,:expr,:expr2,:expr,:expr)
'''

rows = [] 

c.prepare(QUERY,{"expr":expr, "expr2":expr2})      
c.executemany(None, rows)
conn.commit()

conn.close()

Как я могу решить эту проблему?

  • 0
    Ваш опубликованный код содержит только 21 строку. Вы уверены, что не пропускаете что-то?
  • 0
    @HampusLarsson да были комментарии, я редактировал
Показать ещё 7 комментариев
Теги:
sql-insert

1 ответ

0

Пытаться:

c.prepare(QUERY)      
c.executemany(None, [{"expr":expr, "expr2":expr2}])

Из документов executemany, что вы должны передавать свои параметры для executemany, а не для prepare.

https://cx-oracle.readthedocs.io/en/latest/cursor.html

  • 0
    Теперь он выдает эту ошибку "c.executemany (Нет, [{" expr ": expr," expr2 ": expr2}]) cx_Oracle.DatabaseError: ORA-00917: отсутствует запятая"
  • 1
    Вероятно, это связано с тем, что в вашем столбце "PACKAGE BODY" есть пробел в имени, его следует указывать в кавычках.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню