当我转到以下网址时,我想删除MySQL数据库中的某些条目: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时,出现以下错误: 连接到http://127.0.0.1:8080/api/td时出错。
上面的方法对于多个get请求非常有效。但这不适用于我的删除请求。这两个文件都有其他代码和导入。
答案 0 :(得分:0)
原因:
通过浏览器访问路线时,它将执行GET
请求。
因此,访问仅使用/api/td
方法声明的DELETE
会导致Method not allowed
错误。
解决方案:
要解决此问题,我们需要使用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
屏幕截图: