pgAdmin无法找到记录,而SQLAlchemy可以

时间:2019-01-23 00:02:29

标签: postgresql sqlalchemy pgadmin

pgAdmin在SQLAlchemy不会在users表中找到记录。我有一个Web应用程序,它将用户凭证存储在AWS postgres数据库中。该应用程序运行正常。从postgres中选择*将返回表名,但没有记录。通过SQLalchemy连接时,我得到了预期的结果。

postgres的新手,所以我尝试使用引号和其他几个查询。

此查询提供所有表:

SELECT table_name
FROM information_schema.tables
WHERE table_schema='public'
AND table_type='BASE TABLE';

结果:

users
post
user

此查询无效:

SELECT * FROM users;

结果:

id | username | email | password
---------------------------------
(Blank)

SQLAlchemy:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import postgresUser, postgresPass
from datetime import datetime

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "Removed for security"  
db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    image_file = db.Column(db.String(20), nullable=False, 
    default='default.jpg')
    password = db.Column(db.String(60), nullable=False)
    posts = db.relationship('Post', backref='author', lazy=True)


class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    date_posted = db.Column(db.DateTime, nullable=False, 
default=datetime.utcnow)
    content = db.Column(db.Text, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), 
    nullable=False)

users = User.query.all()

for user in users:
    print(user.email) for

给出预期结果:

 jimbo@mail.com
 jane@mail.com

我不知道为什么SQLAchemy可以找到它,但是pgAdmin无法找到它。对发布表的其他查询似乎可行。

使用:Flask,SQLAlchemy,AWS postgres。在本地计算机上运行。

1 个答案:

答案 0 :(得分:0)

已解决: 问题是SQLAlchemy从类“ User”创建了一个名为“ user”的表。用户是Postgres中的保留表。在pgAdmin中,我仅在边栏中看到一个用户表。通过添加双引号可以通过查询访问我的用户表。 SELECT * FROM“ user”;

不要将SQLAlchemy类User或user用于postgres。我重命名了班级用户。希望它能帮助别人。