【发布时间】:2014-01-11 17:10:21
【问题描述】:
我正在尝试集成 PostgreSQL 和 SQLAlchemy,但 SQLAlchemy.create_all() 没有从我的模型中创建任何表。
我的代码:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql+psycopg2://login:pass@localhost/flask_app'
db = SQLAlchemy(app)
db.create_all()
db.session.commit()
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)
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '<User %r>' % self.username
admin = User('admin', 'admin@example.com')
guest = User('guest', 'guest@example.com')
db.session.add(admin)
db.session.add(guest)
db.session.commit()
users = User.query.all()
print users
但我收到此错误:sqlalchemy.exc.ProgrammingError: (ProgrammingError) relation "user" does not exist
我该如何解决这个问题?
【问题讨论】:
-
你用shell检查过
from yourapplication import db db.create_all()吗? -
请打印整个引用
-
将
__tablename__ = "users"添加到您的模型并重试。 -
这个问题已经过时了,但我在尝试解决同样的问题时遇到了它,并想补充一点,在不调用 super() 的情况下覆盖 init 可能会导致问题OP正在经历。在 OP 的情况下,根本不需要覆盖 init 。 OP 的 init 函数不会添加超类尚未执行的任何操作。
标签: python postgresql sqlalchemy