Python & pymysql: таблица базы данных с дефисом в имени - PullRequest
0 голосов
/ 20 марта 2019

Мне нужно запросить данные из базы данных mysqld с именем таблицы, содержащим дефисы.

current_table = "tw3-10_1"
sql2 = "SELECT * FROM " + str(current_table ) 
cursor.execute(sql2)

К сожалению, я получаю: 1064: «У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашемуВерсия сервера MariaDB для правильного синтаксиса для использования рядом с '-10_1' в строке 1 ")

Есть ли способ обойти эту проблему?К сожалению, я не могу изменить названия таблиц .....

Ответы [ 2 ]

3 голосов
/ 20 марта 2019

Обычно вы можете использовать обратные кавычки для цитирования имени таблицы или имени столбца, если оно содержит бесполезные символы.

current_table = "`tw3-10_1`"
sql2 = "SELECT * FROM " + current_table

или если вы предпочитаете

current_table = "tw3-10_1"
sql2 = "SELECT * FROM `{}`".format(current_table)
0 голосов
/ 20 марта 2019

попробуйте вот так, я не знаю о MariaDB, но кавычки должны работать в SQL

sql2 = """
    SELECT
            *
    FROM "{table_name}"
    """.format(
            table_name='table-with-hyphens'
        )
print(sql2)
    # SELECT
    #         *
    # FROM "table-with-hyphens"
...