Как удалить из базы данных MySQL с помощью Python - PullRequest
0 голосов
/ 18 ноября 2018

Я хочу удалить некоторые записи в базе данных MySQL при переходе по этому URL: http://127.0.0.1:8080/api/td

У меня есть файл с именем database.py, и он имеет:

engine = create_engine(config.database_uri)
def delete():
    with engine.connect() as con:
        con.execute("delete from INS where a = 2;")

У меня есть файл с именем init .py, и он имеет:

@app.route('/api/td', methods=["DELETE"])
def update():
    database.delete()
    return 'succefully'

при переходе на http://127.0.0.1:8080/api/td, Я получаю эту ошибку: при подключении к * 1014 произошла ошибка*http://127.0.0.1:8080/api/td.

Приведенный выше метод отлично работал для нескольких запросов get.Но это не работает для моего запроса на удаление.оба файла имеют другие коды и импорт.

1 Ответ

0 голосов
/ 19 ноября 2018

Причина:

Когда маршрут посещается через браузер, он выполняет запрос GET.

Таким образом, посещение /api/td, которое объявлено только с помощью метода DELETE, приведет к ошибке Method not allowed.

Method not allowed error while accessing a route with DELETE method

Решение:

Чтобы преодолеть это, нам нужно объявить маршрут с помощью метода GET вместо DELETE:

@app.route("/api/td", methods=['GET'])

Я создал фиктивное приложение для удаления строки из таблицы базы данных MySQL.

app.py:

from flask import Flask
from database import Database

app = Flask(__name__)
database = Database()

@app.route("/api/td", methods=['GET'])
def delete_row():
    return database.delete()

app.run(debug=True, port=8080)

database.py

from sqlalchemy import create_engine

class Database(object):
    def __init__(self):
        # dialect+driver://username:password@host:port/database
        self.engine = create_engine('mysql://root:123@localhost/practice_db')

    def delete(self):
        try:
            with self.engine.connect() as con:
                con.execute('DELETE FROM `user_table` WHERE `id`=2')
                return 'Deleted successfully'
        except Exception as e:
            return "Exception occurs: {}".format(str(e))

requirements.txt

Click==7.0
Flask==1.0.2
itsdangerous==1.1.0
Jinja2==2.10
MarkupSafe==1.1.0
mysqlclient==1.3.13
SQLAlchemy==1.2.14
Werkzeug==0.14.1

Скриншот:

deleted database row

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...