【问题标题】:flask can't connect sqlalchemy烧瓶无法连接sqlalchemy
【发布时间】:2016-06-03 07:48:58
【问题描述】:

我想在烧瓶上使用 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)

【问题讨论】:

  • Unknown database 'alchemy_new' 确保此数据库存在。

标签: python flask sqlalchemy flask-sqlalchemy


【解决方案1】:

首先我不知道为什么密码应该是唯一的;) 其次,看起来 sqlalchemy 无法识别您的连接字符串。 试试:

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

【讨论】:

    【解决方案2】:

    根据以下代码: 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-29
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 2014-07-20
      • 2020-05-31
      相关资源
      最近更新 更多