python - Flask SQLAlchemy 连接到 MySQL 数据库

标签 python mysql angularjs flask sqlalchemy

设置和代码:

我正在使用 AngularJS 前端构建一个基本的 Flask 应用程序,目前我需要连接到我使用 Godaddy phpmyadmin 托管的 MySQL 数据库。

这是我的__init__.py的一部分

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

# Create instnace called app
app = Flask(__name__)
app.config['SQLAlchemy_DATABASE_URI'] = 'mysql://username:password#@xxxxxx.hostedresource.com/dbname'

# Create SQLAlchemy object
db = SQLAlchemy(app)
# ...

这是我的models.py

from app import app, db

class UsersPy(db.Model):

  __tablename__ = "userspy"

  id = db.Column(db.Integer, primary_key=True)
  username = db.Column(db.String, nullable=False)
  password = db.Column(db.String, nullable=False)

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

  def __repr__(self):
    return '<title {}'.format(self.username)

这是我的views.py 中的一个片段:

from app import app, db
from app.models import UsersPy
from flask import render_template, request, redirect, url_for, jsonify, session, flash

@app.route('/testdb/')
def testdb():
    admin = UsersPy('user1', 'password1')
    guest = UsersPy('user2', 'password2')

    db.session.add(admin)
    db.session.add(guest)

    #db.session.merge(admin)
    #db.session.merge(guest)
    db.session.commit()

    results = UsersPy.query.all()

    json_results = []
    for result in results:
      d = {'username': result.username,
           'password': result.password}
      json_results.append(d)

    return jsonify(items=json_results)

问题:

所有这些都运行良好,当您访问/testdb/位置时,用户已“创建”并以 JSON 格式显示,但是由 Godaddy 托管的实际数据库并未更新,因此不得建立真正的连接或者由于某种原因失败了。我已经创建了 userspy 数据库表,但 add() 和 commit() 函数实际上并未将用户添加到数据库中。我不知道如何巩固 SQLAlchemy 和 MySQL 数据库之间的连接。感谢任何帮助,谢谢。

最佳答案

调试此问题的第一步是在应用配置中将 SQLALCHEMY_ECHO 设置为 True。这将导致 SQLAlchemy 正在执行的实际 MySQL 数据库语句被打印出来。

此外,值得注意的是 SQLAlchemy_DATABASE_URISQLALCHEMY_DATABASE_URI 不同,这就是 the Flask-SQLAlchemy documentation说明配置键应该是。

关于python - Flask SQLAlchemy 连接到 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29461959/

相关文章:

python - 在 Google Colab/Jupyter Notebook 中进行条件 pip 安装

python - 用行值替换 Pandas 索引

c# - 如何在标签上显示百分比c#

javascript - Angular JS 过滤器或语句

AngularJS 密码强度验证

python - Django 表单未保存到数据库

python - 如何按降序排列我的链接(我有链接的值,(num_to_words(v)))

mysql - 如何在 MySQL 中匹配 "1,2,7,9,13,3,10,4,21,6,12"中的 2 个?

mysql - sql加入where和1-n连接

javascript - Angular : Uncaught ReferenceError: $cordovaSQLite is not defined