如何使用python从mysql数据库中删除

4c8rllxm  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(356)

当我转到以下url时,我想删除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请求非常有效。但对我的删除请求无效。两个文件都有其他代码和导入。

jaxagkaj

jaxagkaj1#

原因:
当通过浏览器访问路由时,它将执行 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))
要求.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

截图:
![](https://i.stack.imgur.com/boc1s.png)

相关问题