Ошибка при загрузке таблицы базы данных - Python mysql - PullRequest
0 голосов
/ 17 апреля 2020

Я практически новичок в MySQL базах данных.
Я пытаюсь сделать записи и нахожу эту ошибку в консоли:

mysql .connector.errors.ProgrammingError: 1064 (42000): у вас есть ошибка в SQL синтаксис; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса, который можно использовать рядом со значением «общее количество проблем (метка времени, количество ошибок, проект)» ЗНАЧЕНИЯ («2020-04-17», «908», «G» в строке 1

и вот код, который я пытаюсь запустить:

uploadMap = {
    'current total issues': 'apiUrl0...',
    'current total unresolved issues': 'apiUrl1...',
    'total created in the week': 'apiUrl2...',
    'total blocker created in week': 'apiUrl3...'
}

for project in ('Graphic', 'Develop'):
    for tableName, url in uploadMap.items():

        sql = f"INSERT INTO {tableName} (Timestamp, Count issues, Project) VALUES (%s, %s, %s)"

        val = (todaySql, getTotal(url + project), project)

        cursor.execute(sql, val)

Некоторые пояснения:

  • getTotal всегда возвращает целое число
  • todaySql это дата предполагаемого формата, которая понадобится MySQL, управляемая этим объектом:
class jiraDates:
    def __init__(self):
        self.format = ('%Y', '%m', '%d')

    def getJiraDate(self, daysBack):
        dateBack = datetime.today() - timedelta(days=daysBack)
        return '-'.join([dateBack.strftime(ref) for ref in self.format])

    def getSqlDate(self, daysBack):
        return datetime.strptime(self.getJiraDate(daysBack), '-'.join(self.format))

todaySql = jiraDates().getSqlDate(0)



Я надеюсь ничего серьезного ...!

1 Ответ

1 голос
/ 20 апреля 2020

То, что Джордан сказал, не так. Если имена больше монограммы, вам нужно использовать обратные кавычки (хотя я настоятельно рекомендую использовать случай со змеей, например name_of_the_table).
Еще одна вещь, которую вы должны убедиться в том, что дата должна быть в таком формате: datetime.date(int(year), int(months), int(date)).

Таким образом, вы должны изменить эти две строки:

def getSqlDate(self, daysBack):
    jiraDate = self.getJiraDate(daysBack).split('-')
    return datetime.date(int(jiraDate[0]), int(jiraDate[1]), int(jiraDate[2]))

и

sql = f"INSERT INTO `{tableName}` (Timestamp, `Count issues`, Project) VALUES (%s, %s, %s)"
...