#python #mysql
#python #mysql
Вопрос:
У меня есть база данных имен и цен, которая обновляется ежедневно, когда я прогоняю ее через пакет кода и обновляю во второй базе данных все имена, пока не дойдет до ‘aapl’, после чего она выдает ошибку 1064, которая выглядит следующим образом
-----------------------------------
Traceback (most recent call last):
File "testrun.PY", line 45, in <module>
t.Push.find_all(conn, cursor)
File "c:tradetools.py", line 198, in find_all
Push.find_streak(conn, cursor, name)
File "c:tradetools.py", line 189, in find_strea
k
.format(c, name))
File "C:AppDataLocalProgramsPythonPython35libsite-packagesp
ymysqlcursors.py", line 166, in execute
result = self._query(query)
File "C:AppDataLocalProgramsPythonPython35libsite-packagesp
ymysqlcursors.py", line 322, in _query
conn.query(q)
File "C:AppDataLocalProgramsPythonPython35libsite-packagesp
ymysqlconnections.py", line 837, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File "C:AppDataLocalProgramsPythonPython35libsite-packagesp
ymysqlconnections.py", line 1021, in _read_query_result
result.read()
File "C:AppDataLocalProgramsPythonPython35libsite-packagesp
ymysqlconnections.py", line 1304, in read
first_packet = self.connection._read_packet()
File "C:AppDataLocalProgramsPythonPython35libsite-packagesp
ymysqlconnections.py", line 983, in _read_packet
packet.check_error()
File "C:AppDataLocalProgramsPythonPython35libsite-packagesp
ymysqlconnections.py", line 395, in check_error
err.raise_mysql_exception(self._data)
File "C:AppDataLocalProgramsPythonPython35libsite-packagesp
ymysqlerr.py", line 102, in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.ProgrammingError: (1064, "42000You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right sy
ntax to use near 'AAPL''' at line 1")
c:>
Код, который он выполняет, выглядит следующим образом, почему обновление добавляет больше запятых к имени appl?
def find_streak(conn, cursor, name):
print(name)
cursor.execute("SELECT * FROM `trade_data`.`import_data`"
" WHERE name =%s;", name)
logs = cursor.fetchall()
cursor.execute("INSERT IGNORE INTO `trade_data`.`analysis`(`name`) "
"VALUES (%s) ON DUPLICATE KEY UPDATE "
"ndays=0;", name)
conn.commit()
logs = [list(x) for x in logs]
logs.sort()
....
cursor.execute ("UPDATE `trade_data`.`analysis` "
"SET `ndays` = {0} WHERE name='{1}'"
.format(c, name))
conn.commit()
его извлечение из таблицы, которая выглядит следующим образом
date|name|price|
и ввод в таблицу, которая
date|name|result
Комментарии:
1. вы уверены в обратных ссылках? разве это не должны быть простые кавычки?
2. @alexce я имел в виду пролив
UPDATE
в вашем удаленном ответе на его первый запрос. Я даже видел нижний запрос. Несмотря на это, может показаться, что одинарные кавычки должныname
заключаться в обоих запросах. Но код ошибки выглядит как дополнительные одинарные кавычки в конце. Схема таблицы была бы хороша в вопросе, как обычно3.
name
Уже содержит одинарные кавычки?4. рассматриваемое имя имеет одинарные кавычки, и ни одно из остальных не имеет, но если я удалю это имя и повторю его, оно сгенерирует имя с одинарными кавычками
5. таблицы, добавленные в op