2017-02-10 4 views
-1

Я хочу удалить несколько строк из почти 500 таблиц в базе данных mysql с помощью python.Удаление данных из нескольких таблиц mysql с использованием python

Я знаю, что запрос должен быть чем-то вроде этого: DELETE FROM (имя таблицы)
[WHERE условия] [ORDER BY ...] [LIMIT строки]

, но я не уверен, что должен Я использую имя таблицы, когда я перебираю таблицы!

вот моя петля

from mysql.connector import (connection) 
# call databasecnx = connection.MySQLConnection(user='user', password='PW',host='127.0.0.1', database= 'database') 
cursor = cnx.cursor() 
cursor.execute("SHOW TABLES LIKE 'options_20%'") 
table_names = [tables for (tables,) in cursor] 
for t in table_names: 
cursor.execute("Delete table-refs WHERE Expiration = Datadate AND UnderlyingSymbol = 'SPY'") 
cnx.commit() 

я получил ошибку:
У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое ... и т. д.

ответ

0

Тест с этим .... Вы не указали from в своем запросе.

for table in table_names: 
cursor.execute("DELETE FROM"+ table +"WHERE Expiration = Datadate AND UnderlyingSymbol = 'SPY'") 
+0

Да, это была ошибка копирования. все еще ошибка в синтаксисе SQL :( – roby

+0

Добавить пробел до и после * table * concatenation. Еще лучше использовать 'str.format' с обратными выводами MySQL для исключения специальных символов и пробелов:' '" DELETE '{}' WHERE Expiration = Datadate AND UnderlyingSymbol = 'SPY' ". Format (table)' ' – Parfait

+0

все еще ошибка в синтаксисе. – roby

Смежные вопросы