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。在本地计算机上运行。
答案 0 :(得分:0)
已解决: 问题是SQLAlchemy从类“ User”创建了一个名为“ user”的表。用户是Postgres中的保留表。在pgAdmin中,我仅在边栏中看到一个用户表。通过添加双引号可以通过查询访问我的用户表。 SELECT * FROM“ user”;
不要将SQLAlchemy类User或user用于postgres。我重命名了班级用户。希望它能帮助别人。