Ошибка при добавлении столбцов в таблицу базы данных SQLite3 с помощью цикла Python - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь создать таблицу в базе данных SQLite, используя список элементов в Python, но при создании таблицы возникает ошибка в работе.

Я использую цикл python для использования этого списка в качестве заголовков столбцов.Цикл работал нормально до элемента списка «QT», и после этого он разрывается и выдает ошибку.

col_names = [
    "ABPs",
    "ABPd",
    "ABPm",
    "ARTs",
    "ARTd",
    "ARTm",
    "AoS",
    "AoD",
    "AoM",
    "UAPs",
    "UAPd",
    "UAPm",
    "P1s",
    "P1d",
    "P1m",
    "NBPs",
    "NBPd",
    "NBPm",
    "P_1d",
    "P_1m",
    "PVC",
    "QT",
    "QT-HR",
    "QTc",
    "ST-I",
    "ST-II",
    "ST-III",
    "ST-aVR",
    "ST-aVF",
    "ST-aVL",
    "ST-MCL",
    "ST-V1",
    "ST-V2",
    "dQTc",
    "ST-V3",
    "ST-V4",
    "ST-V5",
    "ST-V6",
]

cur.execute("""CREATE TABLE CICU2 (datetime DATETIME)""")
for colname in col_names:
    cur.execute("""ALTER TABLE CICU2 ADD COLUMN """ + colname + """ TEXT""")

Ошибка: near "-": syntax error.

1 Ответ

0 голосов
/ 26 декабря 2018

- не допускается в неэкранированных именах столбцов;Вы просите SQLite вычесть одно имя столбца из другого.Вы должны использовать правильное цитирование , если хотите использовать любые нестандартные символы в имени столбца.

Стандартный метод цитирования имени столбца состоит в использовании двойных кавычек;любые существующие двойные кавычки в имени столбца можно заменить на удвоенные двойные кавычки:

cur.execute('ALTER TABLE CICU2 ADD COLUMN "{}" TEXT'.format(colname.replace('"', '""'))

Я использовал строку формата , чтобы вставить имя столбца в запрос, который легче читать для людей.Часть {} заменяется значением первого аргумента метода str.format().

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