首页 > 解决方案 > 优化 REST API (python + sqlite3)

问题描述

有关如何优化此代码的任何建议?它适用于 REST API,但速度很慢。

id = str(request.form['id'])
client = str(request.form['client'])
translationID = str(request.form['translationID'])

if os.path.isdir(id):
    conn = sqlite3.connect(db)
    c = conn.cursor()
    c.execute('''CREATE TABLE IF NOT EXISTS foo (v1 TEXT, v2 TEXT, UNIQUE (v1) ON CONFLICT REPLACE )''')
    for row in c.execute('SELECT * FROM foo WHERE v1=?', [st]):
        if(st == row[0]):
           return row[1], 200
return "", 404

标签: pythonsqliterestoptimization

解决方案


如果您可以在服务器启动时检查它,而不是检查每个请求中是否存在表,它会更好。

其次,如果您正在开发一个成熟的应用程序,我强烈建议您为此使用 ORM 包。我曾在一个带有原始查询的烧瓶项目中工作,管理、验证、维护、更新、测试和保护您的代码成为一项繁琐的任务。它也缺乏可重用性。

如果您不熟悉烧瓶,以下软件包会有所帮助:

  1. SQLAlchemy:烧瓶的 ORM ( https://www.sqlalchemy.org/ )
  2. Flask SQLAlchemy:支持 SQLAlchemy 的 Flask 扩展(https://flask-sqlalchemy.palletsprojects.com/en/2.x/
  3. Flask Migrate:用于轻松管理数据库迁移的软件包(https://flask-migrate.readthedocs.io/en/latest/
  4. Flask Marshmallow:用于轻松序列化和反序列化对象(https://flask-marshmallow.readthedocs.io/en/latest/

最重要的是,您应该至少阅读本教程一次https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world


推荐阅读