#python #mysql #sql #sqlalchemy #trading
#python #mysql #sql #sql — алхимия #торговля
Вопрос:
def check_data(self, code):
if self.is_table_exist():
sql = "SELECT check_item FROM '%s' WHERE code = '%s'"
check = self.engine_stock_item_all.execute(sql % (self.today, str(code))).fetchall()[0][0]
return check
def is_table_exist(self):
sql = "SELECT 1 FROM information_schema.tables WHERE table_schema ='stock_item_all' AND table_name = '{}'"
rows = self.engine_stock_item_all.execute(sql.format(self.today)).fetchall()
if rows:
return True
else:
return False
def make_daily_db(self):
code_name = self.daily_item['code_name']
df = pd.DataFrame(self.daily_item)
df_temp = df[['date', 'open', 'high', 'low', 'close', 'market_cap', 'volume', 'issued_shares', 'outstanding_shares']]
df_temp.to_sql(name=code_name, con=self.engine_daily_chart, if_exists='append')
sql = "UPDATE '%s' SET check_item=1 WHERE code_name = '%s'"
self.engine_stock_item_all.execute(sql % (self.today, code_name))
Привет, сейчас я разрабатываю торговую программу на python (3.8). И если я запускаю программу, я получаю ошибку, подобную этой.
Ошибка
sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) (1064, «У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с «20201130», ГДЕ code = «155660» в строке 1″) [SQL:ВЫБЕРИТЕ check_item ИЗ ‘20201130’, ГДЕ code = ‘155660’]
Я отладил свой код, и я думаю, что я делаю что-то не так в методе, который я определил check_data, is_table_exist и make_daily_db. Я пробую много вещей, чтобы решить эту проблему весь день, но я не знаю, как изменить свой код. Пожалуйста, кто-нибудь, кто знает, помогите мне. Мне действительно нужна ваша помощь.
Комментарии:
1. Является ли название таблицы буквально всеми числами? Если это так, попробуйте использовать обратные тики вместо одинарных кавычек:
SELECT check_item FROM `%s` WHERE code = '%s'
2. О, действительно спасибо за ваш ответ. Я попробую ваш комментарий и… Я получил еще одну ошибку. Процесс завершен с кодом выхода -1073740791 (0xC0000409). Я думаю, что это ошибка PyQt5.EventLoop. Если вы знаете об этой проблеме, пожалуйста, предоставьте свою помощь подробнее. В любом случае, большое спасибо!
3. Хорошо, но на первоначальный вопрос о том, что имя таблицы — это все числа, так и не был дан ответ, поэтому мой пример был только предположением. Похоже, что в таблице могут отсутствовать числа, что вызывает ошибку, но я бы подумал, что дата и код будут указаны в предложении WHERE, а предложение FROM, возможно, будет использовать
stock_item_all
? … Я могу ошибаться, но у меня нет полной картины, которую вы знаете.4. Я решаю проблему. Ваш комментарий был действительно полезен для меня. Спасибо!
5. Что же это было за открытие? (может быть полезно и другим)
Ответ №1:
Удалить одинарные кавычки
SELECT check_item FROM %s WHERE code = %s