ValueError: параметр операции должен быть str - Python SQLite - PullRequest
0 голосов
/ 20 марта 2020

При попытке вставить некоторые данные в таблицу SQLite3 возникает ошибка.

for tag in subject["tags"]:
    query = ("""
    INSERT INTO Tags (tag_text, tag_category, tag_start, tag_end, tag_doc_id, tag_subject_id, tag_id)
    VALUES(?,?,?,?,?,?,?)
    """, (str(tag["tag_text"]), str(tag["tag_label"]), str(tag["tag_start"]), str(tag["tag_end"]), str(doc_id), str(subject["subject_id"]), str(tag["tag_id"])))

    c.execute(query)

Я получаю сообщение об ошибке:

ValueError: operation parameter must be str

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

1 Ответ

1 голос
/ 20 марта 2020

Запрос и параметры являются отдельными аргументами для c.execute(). Запрос представляет собой строку, параметры являются итеративными.

query = """
INSERT INTO Tags (tag_text, tag_category, tag_start, tag_end, tag_doc_id, tag_subject_id, tag_id)
VALUES(?,?,?,?,?,?,?)
"""
params = (str(tag["tag_text"]), str(tag["tag_label"]), str(tag["tag_start"]), str(tag["tag_end"]), str(doc_id), str(subject["subject_id"]), str(tag["tag_id"]))

c.execute(query, params)

Если вы хотите соединить их вместе, вам нужно распространить их при вызове метода.

query = ("""
INSERT INTO Tags (tag_text, tag_category, tag_start, tag_end, tag_doc_id, tag_subject_id, tag_id)
VALUES(?,?,?,?,?,?,?)
""", (str(tag["tag_text"]), str(tag["tag_label"]), str(tag["tag_start"]), str(tag["tag_end"]), str(doc_id), str(subject["subject_id"]), str(tag["tag_id"])))

c.execute(*query)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...