Проблема:
Я пытаюсь выполнить запрос на удаление, используя pymysql
через мою функцию delEODTmp
, но он ничего не делает (т.е. удаляет записи).Он также не возвращает никаких ошибок, из-за чего трудно понять, почему он не работает.
Устранение неполадок:
1) Функция retSQL работает как чудо,извлечение любой выбранной строки, которую я выбрасываю.Это подтверждает, что мои настройки входа пользователя верны для pymysql.connect
.Я делаю это с клиента на Mysql 5.7 server
в той же сети.
2) На том же клиенте, подключающемся к тому же серверу с теми же учетными данными, что и я:
- Выполните
SQL DELETE FROM t_EOD_tmp;
успешно с workbench
- Выполните
SQL DELETE FROM t_EOD_tmp;
успешно с phpMyAdmin
3) Я попытался запустить скрипт py локально на сервере, но удалитьзапрос по-прежнему не работает.Результат тот же, что и у клиента.
Вопросы:
Кажется, что деструктивные запросы блокируются при выполнении из PyMySQL.Нужно ли мне что-то включать из Python, из MySQL?
Похоже, нет обширной документации по PyMySQL, поэтому, возможно, было бы лучше разработать ее с помощью другой библиотеки MySQL Python,Есть ли лучший способ?
Код:
import pymysql
import pandas
query1 = '''SELECT * FROM t_EOD limit 1000;'''
def retSQL(query):
conn = pymysql.connect(host=myServer, port=myPort, user=myUsr, password=myPwd, db=myDB)
df = pd.read_sql(query,conn)
print(df.head(5))
conn.close() # closeSQL connection
def delEODTmp():
conn = pymysql.connect(host=myServer, port=myPort, user=myUsr, password=myPwd, db=myDB)
cur = conn.cursor()
q1 = '''DELETE FROM t_EOD_tmp;'''
cur.execute(q1)
cur.close()
conn.close()
retSQL(query1)
delEODTmp()