pgAdmin 找不到记录,而 SQLAlchemy 可以
pgAdmin cannot find records while SQLAlchemy does
pgAdmin 没有在用户 table 中找到记录,而 SQLAlchemy 可以。我有一个将用户凭证存储在 AWS postgres 数据库中的网络应用程序。该应用程序运行良好。 Selecting * from postgres returns table 名称但没有记录。当通过 SQLalchemy 连接时,我得到了我期望的结果。
postgres 的新手,所以我尝试使用引号和其他几个查询。
此查询给出所有 tables:
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 不能。 post table 的其他查询似乎有效。
使用:Flask、SQLAlchemy、AWS postgres。 运行 在本地机器上。
已解决:
问题是 SQLAlchemy 从 class 'User' 创建了一个名为 'user' 的 table。用户是 Postgres 中的保留 table。在 pgAdmin 中,我只在边栏中看到一个用户 table。我的用户 table 可以通过添加双引号的查询来访问。 SELECT * 来自 "user";
不要使用 SQLAlchemy class 用户或 postgres 用户。我重命名了我的 class 用户。希望它能帮助别人。
pgAdmin 没有在用户 table 中找到记录,而 SQLAlchemy 可以。我有一个将用户凭证存储在 AWS postgres 数据库中的网络应用程序。该应用程序运行良好。 Selecting * from postgres returns table 名称但没有记录。当通过 SQLalchemy 连接时,我得到了我期望的结果。
postgres 的新手,所以我尝试使用引号和其他几个查询。
此查询给出所有 tables:
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 不能。 post table 的其他查询似乎有效。
使用:Flask、SQLAlchemy、AWS postgres。 运行 在本地机器上。
已解决: 问题是 SQLAlchemy 从 class 'User' 创建了一个名为 'user' 的 table。用户是 Postgres 中的保留 table。在 pgAdmin 中,我只在边栏中看到一个用户 table。我的用户 table 可以通过添加双引号的查询来访问。 SELECT * 来自 "user";
不要使用 SQLAlchemy class 用户或 postgres 用户。我重命名了我的 class 用户。希望它能帮助别人。