使用Flask和SQLAlchemy访问现有MySQL数据库时出现“No Such Table”错误
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'