烧瓶无法连接sqlalchemy

时间:2016-06-03 07:48:58

标签: python flask sqlalchemy flask-sqlalchemy

我想在烧瓶上使用sqlalchemy连接sql

但它无法

出现错误

sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1049, "Unknown database 'alchemy_new'")

我无法解决这个问题。

# -*- coding:utf-8 -*-

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_restful import reqparse, abort, Api, Resource

app = Flask(__name__)
api = Api(app)

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:12345@localhost/catchat'
db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)
    password = db.Column(db.String(120), unique=True)

    def __init__(self, username, email, password):
        self.username = username
        self.email = email
        self.password = password

    def __repr__(self):
        return '<User %r>' % self.username

user_inf = {'user1' : {'username':'jaeyeonkim','email':'jaeyeon93@naver.com', 'password':'12345'}}

def not_exist(user_id):
    if user_id not in user_inf:
        abort(404, message="{} does not exist".format(user_id))
parser = reqparse.RequestParser()
parser.add_argument('username')
parser.add_argument('email')
parser.add_argument('password')

class user(Resource):
    def get(self, user_id):
        not_exist(user_id)
        return user_inf[user_id]
    def delete(self,user_id):
        not_exist(user_id)
        del user_inf[user_id]
        return '', 200
    def put(self,user_id):
        args = parser.parse_args()
        not_exist(user_id)

        a = {}
        a['username'] = args['username']
        a['email'] = args['email']
        a['password'] = args['password']

        user_inf[user_id] = a
        return a, 200
class userlist(Resource):

    def get(self):
        return user_inf
    def post(self):
        args = parser.parse_args()


        new_user = user_inf(args['username'], args['email'], args['password'])
        new_user_id = db.session.add(new_user)
        db.session.commit()
        return new_user_id, 200

api.add_resource(userlist, '/users')
api.add_resource(user,'/api/v1/users/<user_id>')

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

2 个答案:

答案 0 :(得分:0)

首先,我不知道为什么密码必须是唯一的;) 其次看起来sqlalchemy并不认识你的连接字符串。 尝试:

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

答案 1 :(得分:0)

根据以下代码: app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:12345@localhost/catchat' 你的数据库是'catchat'。请创建它。

mysql -u root -p12345 create database catchat;

在使用之前创建表。

db.create_all()

最后,只是一个建议:不要使用flask-restful来定义api,请选择 @app.route("/user", methods=["GET"]),简单,简单,实用。

相信我。两周前,我只是将我的代码从flask-restful重写为app.route。