使用Flask和SQLAlchemy访问现有MySQL数据库时出现“No Such Table”错误

0 投票
1 回答
1194 浏览
提问于 2025-04-18 10:38

myapp.py

#!flask/bin/python
from flask import Flask, request, jsonify
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
db = SQLAlchemy(app)

app.config['SQLAlchemy_DATABASE_URI'] = 'mysql://root:root@localhost/linkmanager'

class Link(db.Model):
    __tablename__ = 'link'
    id = db.Column(db.Integer, primary_key = True)
    title = db.Column(db.Text)
    url = db.Column(db.Text)
    type = db.Column(db.Integer)
    insert_date = db.Column(db.DateTime)

@app.route('/links', methods=['GET'])
def links():
    if request.method == 'GET':
        results = Link.query.limit(10).offset(0).all()

        json_results = []
        for result in results:
            d = {
                    'id': results.id,
                    'title': results.title,
                    'url': results.url,
                    'type': results.type,
                    'insert_date': results.insert_date
                }
            json_results.append(d)
        return jsonify(items=json_results)

if __name__ == '__main__':
    app.run(debug=True)

当我尝试访问 localhost:5000/links 时出现的错误信息:

sqlalchemy.exc.OperationalError 操作错误:没有这个表:link u'SELECT link.id AS link_id, link.title AS link_title, link.url AS link_url, link.type AS link_type, link.insert_date AS link_insert_date \nFROM link\n LIMIT ? OFFSET ?' (10, 0)

我知道这个表是存在的,因为我用 phpAdmin 设置过,并且从命令行也能访问它。我还尝试用 Java 连接这个表,也成功了……我完全不知道为什么这不行!谢谢大家的帮助。

1 个回答

2

你的设置名称写错了。把

app.config['SQLAlchemy_DATABASE_URI'] = 'mysql://root:root@localhost/linkmanager'

改成

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@localhost/linkmanager'

撰写回答