sqlalchemy-帮助了解查询+加入+筛选?
我正在努力了解SQL炼金术的功能,特别是在过滤器中,然后是外部连接。我有两个简单的表:
class Post(db.Model):
__tablename__ = "posts"
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(
db.Integer,
db.ForeignKey('users.id'),
index=True,
nullable=True)
privacy = db.Column(db.Text, default="private")
class User(db.Model):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.Text, unique=True, index=True, nullable=False)
我的目标是对所有标记为private
的帖子过滤发布
,然后使用用户
加入以添加>用户名
。
尝试#1
public_posts = GeneratedImages.query.filter_by(privacy="public")\
.outerjoin(User)\
.all()
logger.info(public_images[0].username)
> AttributeError: 'Post' object has no attribute 'username'
尝试#2
public_posts = db.session.query(
Post
).outerjoin(
(User, Post.user_id == User.id)
).filter(
Post.privacy == "public"
).all()
> AttributeError: 'Post' object has no attribute 'username'
尝试#3
public_posts = db.session.query(Post, User).outerjoin(
User, Post.user_id == User.id
).filter_by(privacy="public").all()
> AttributeError: type object 'User' has no attribute 'privacy'
我在这个简单的过滤器上做错了什么?
I'm struggling to understand how SQL Alchemy functions, specifically with respect to a filter, then outer join. I have two simple tables:
class Post(db.Model):
__tablename__ = "posts"
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(
db.Integer,
db.ForeignKey('users.id'),
index=True,
nullable=True)
privacy = db.Column(db.Text, default="private")
class User(db.Model):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.Text, unique=True, index=True, nullable=False)
My goal is to filter Post
for all posts marked as private
, then join with User
to add the username
.
Attempt #1
public_posts = GeneratedImages.query.filter_by(privacy="public")\
.outerjoin(User)\
.all()
logger.info(public_images[0].username)
> AttributeError: 'Post' object has no attribute 'username'
Attempt #2
public_posts = db.session.query(
Post
).outerjoin(
(User, Post.user_id == User.id)
).filter(
Post.privacy == "public"
).all()
> AttributeError: 'Post' object has no attribute 'username'
Attempt #3
public_posts = db.session.query(Post, User).outerjoin(
User, Post.user_id == User.id
).filter_by(privacy="public").all()
> AttributeError: type object 'User' has no attribute 'privacy'
What am I doing wrong with this simple filter and join?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论