【问题标题】:Setting up postgres with flask on win7在 win7 上使用烧瓶设置 postgres
【发布时间】:2016-05-04 21:52:43
【问题描述】:

我正在开发基于 http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982 的烧瓶应用程序。

作为 tut 的一部分,我正在尝试使用屏幕截图中的结构连接到 postgres 服务器。我添加了一个你可以看到的表'yournewdb'。

根据 tut,我的主文件 ('routes.py') 中有以下代码:

app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://postgres:123@localhost/yournewdb"

from models import db
db.init_app(app)

@app.route('/testdb')
def testdb():
  if db.session.query("1").from_statement("SELECT 1").all():
    return 'It works.'
  else:
    return 'Something is broken.'

models.py:

from flask.ext.sqlalchemy import SQLAlchemy
from werkzeug import generate_password_hash, check_password_hash

db = SQLAlchemy()

class User(db.Model):
  __tablename__ = 'users'
  uid = db.Column(db.Integer, primary_key = True)
  firstname = db.Column(db.String(100))
  lastname = db.Column(db.String(100))
  email = db.Column(db.String(120), unique=True)
  pwdhash = db.Column(db.String(54))

  def __init__(self, firstname, lastname, email, password):
    self.firstname = firstname.title()
    self.lastname = lastname.title()
    self.email = email.lower()
    self.set_password(password)

  def set_password(self, password):
    self.pwdhash = generate_password_hash(password)

  def check_password(self, password):
    return check_password_hash(self.pwdhash, password)

当我转到http://127.0.0.1:5000/testdb 时,我收到了一个内部服务器错误。调试器给出:

C:\envs\virtalenvs\flask_mini\lib\site-packages\flask_sqlalchemy\__init__.py:800: UserWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future.  Set it to True to suppress this warning.
  warnings.warn('SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future.  Set it to True to suppress this warning.')
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
C:\envs\virtalenvs\flask_mini\lib\site-packages\sqlalchemy\sql\elements.py:3779: SAWarning: Textual SQL expression 'SELECT 1' should be explicitly declared as text('SELECT 1') (this warning may be suppressed after 10 occurrences)
  {"expr": util.ellipses_string(element)})

我做错了什么?

【问题讨论】:

  • 调试器说了什么?
  • 您的模型文件和数据库配置中有什么? eg.db = SQLAlchemy()
  • 对不起,我做了上面的更改。

标签: python postgresql flask


【解决方案1】:

似乎您正在连接到一个表,而不是一个数据库,对吗?为什么不将yournewdb 更改为postgres 或创建一个新数据库?你仍然必须制作你的桌子。您可以让 SQLAlchemy 为您执行此操作。这是一个很好的答案:https://stackoverflow.com/a/20749534/2326132

我建议为每个项目创建一个新数据库,即使它们都是测试项目。您会遇到更少的问题。

【讨论】:

  • 感谢您的回复 Ryan 我已经创建了一个新的 db 'flask'。我查看了链接并尝试关注此
  • Ryan,你介意看看stackoverflow.com/questions/35047914/…,我在自动创建表格时遇到了问题
猜你喜欢
  • 2018-10-07
  • 2014-03-07
  • 2012-07-31
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
相关资源
最近更新 更多