我有一个错误,当SQLAlchemy产生错误的SQL查询,但我不能确定条件。
我使用Flask-SQLAlchemy,最初它只是一个MyModel.query,它由简单的SELECT和JOINs表示。但是当应用.limit()方法时,它会转换并使用子查询来获取主对象,然后才会应用连接。问题出在ORDER BY语句中,该语句保持不变并忽略子查询定义。
下面是示例,我已经简化了选择字段:
-- Initially
SELECT *
FROM customer_rates
LEFT OUTER JOIN seasons AS seasons_1 ON seasons_1.id = customer_
我想做,但在SQLAlchemy。唯一的区别是,我不只是能够获得最新的记录,我希望能够在给定的时间戳之前获得最新的记录。只要确保没有删除行,就可以像在特定时间戳上一样查看数据库。
假设我的模型是这样的:
from datetime import datetime
from sqlalchemy import Column, Integer, DateTime
from sqlalchemy.ext.declarative include declarative_base
Base = declarative_base()
class User(Base):
__tablename__
在sqlalchemy查询方面我需要一些帮助。我很难在sqlalchemy中实现这个mysql查询。
MySQL查询:
select u.post_id
from
user_record_cards u
where
u.record_card_id = 1 and u.count = 1
order by (select
count(*)
from
post_likes p
where
p.post = u.post_id)
我的sqlalchemy查询是:
obj = (
UserRecordCard.
我很难将这个SQL转换成一个有效的SQLAlchemy查询:
select *
from A
join B on B.Id = (
select top 1 Id
from B
where B.name = A.name
order by B.date
)
我试过使用子查询,但失败了:
query = session.query(A, B)
sub_query = session.query(B)
sub_query = sub_query.filter(B.name == A.name)
sub_query = sub_query.order_by(B.da
我试图将以下查询转换为SQLAlchemy ORM查询:
SELECT applications.*,
appversions.version
FROM applications
JOIN appversions
ON appversions.id = (SELECT id
FROM appversions
WHERE appversions.app_id = applications.id
我是SQLAlchemy的新手,所以如果这个问题没有很好地表达,请稍等片刻。 但我有一个特别的问题要解决。假设我们有一个父表、子表和玩具桌。我们在家庭-父母,父母-孩子和孩子-玩具之间建立了m2m关系。 现在,如果我们想要收集所有存在玩具的家庭(孩子可以是父母家庭和祖父母家庭的一部分),我们将这样做: select * from family where parent_id in ( select parent_id from parent where child_id in (select child_id from child where toy_id in (1,2))) 我想将其转换
所以我有一个SQLALchemy模型,如下所示
from sqlalchemy import (create_engine, Column, BigInteger, String,
DateTime)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.ext.hybrid import hybrid_property
Base = declarative_base()
class Trades(Base):
__tablename__ =
我对FastAPI和SqlAlchemy在PostgreSQL中的使用都很陌生。我一直在努力创建一些模型,这些模型一开始就很不错。
class Parent(Base):
__tablename__ = "parents"
uid = Column(Integer, primary_key=True)
children = relationship("Child", back_populates="parent")
class Child(Base):
__tablename__ = "children"
u
在SQL中,我可以使用IN操作符进行如下所示的子查询:
SELECT * FROM t1
WHERE (t1.some_int, t1.some_string) IN (
SELECT id, name FROM t2
)
但我无法将其转换为SQLAlchemy查询。据我所知,in_方法只在一列上工作。有没有办法在SQLAlchemy中复制此功能?
我有一个表示层次结构的数据库表,这意味着它有一个自引用的外键。我希望根据对象的子项数量对对象进行排序。
问题是,我既不知道如何进行适当的自连接,也不知道如何在原始查询中请求子集合的计数。结果,我不得不检索孩子,获取孩子集合的长度,并在Python中对结果进行排序。
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship
Base = declarative_base()
engin
我试图在单个查询中获取一组固定的行,外加一些由子查询找到的其他行。我的问题是我的SQLAlchemy代码生成的查询是不正确的。
问题是SQLAlchemy生成的查询如下:
SELECT tbl.id AS tbl_id
FROM tbl
WHERE tbl.id IN
(
SELECT t2.id AS t2_id
FROM tbl AS t2, tbl AS t1
WHERE t2.id =
(
SELECT t3.id AS t3_id
FROM tbl AS t3, tbl AS t1
WHERE t3.id < t1.id ORDER BY t3.id DESC LIMIT 1
在SQLAlchemy中,如何引用已经与关系连接的表而不需要额外的查询?
class CommonMetadata(Base):
id = Column(Integer, primary_key=True)
data = Column(String)
class Child(CommonMetadata):
id = Column(Integer, ForeignKey("CommonMetadata.id"), primary_key=True)
key = Column(String)
common_metadata = rela
我一定是个白痴,因为我不知道如何让SQLAlchemy执行一个简单的、非懒惰的内部连接。换句话说,在一个查询中返回所有结果。
我想要运行的原始SQL查询是:
select
city.population,
state.name
from
city c inner join state s
on c.state_id = s.id
我使用的SQLAlchemy语句是:
session.query(City.population, State.name).all()
City和State模型已经定义了关系,SQLAlchemy语句返回正确的值。但是它要花费很长时间,因为它正在
我正在编写一个查询,通过从另一个表中计算其值和列之间的差异来更新表列。在原始SQL中,如下所示:
UPDATE
products
SET
quantity = products.quantity - order_items.quantity
FROM
order_items
WHERE
order_items.order_id = %(order_id_1) s
AND products.code = order_items.product_code;
我检查了SQLAlchemy文档并找到了关于update表达式的:
WHERE子句可以引用多个表。对
SELECT *
FROM Residents
WHERE apartment_id IN (SELECT ID
FROM Apartments
WHERE postcode = 2000)
我正在使用sqlalchemy并尝试执行上面的查询。我一直无法使用db.engine.execute(sql)将其作为原始SQL执行,因为它抱怨我的关系不存在……但是我使用以下格式成功地查询了我的数据库:session.Query(Residents).filter_by(???)。但是,我不知道如何使用这种格式构
所需的原始SQL:
SELECT
id
FROM
(SELECT some_table.id FROM some_table WHERE some_table.some_field IS NULL) AS subq1
UNION
(SELECT some_table.id WHERE some_table.some_field IS NOT NULL)
LIMIT 10;
下面是python代码:
import sqlalchemy
SOME_TABLE = sqlalchemy.Table(
'some_table',
sqlalchemy.M
我是新手,正在使用python并尝试使用SQLAlchemy来连接我的数据库。我有一些从新闻故事中获取信息的表格。我做的第一件事是在sql console中运行查询,然后使用SQLAlchemy构建它。
我尝试基于标签进行搜索,但我需要故事的所有标签,我在sql控制台中测试了以下查询,它工作正常:
SELECT s.id as id, s.date as date, s.image as image, so. name as source_name,
so.logo as source_logo, s.title as title, s.url as url, (
SELECT G
我需要生成一个类似以下内容的查询:
(select * from ... where .. and .. order by .. limit ..)
union all
(select * from ... where .. and .. order by .. limit ..)
order by ..
使用SQLAlchemy,我创建了两个查询对象,如下所示:
q1 = Session.query(..).filter(..).filter(..).order_by(..).limit(..)
q2 = Session.query(..).filter(..).filter(..).ord
我试图找出星号(*)在下面的SQLAlchemy查询中的确切含义。有人能澄清一下吗?
import uuid
from sqlalchemy import Column
from sqlalchemy import Integer
from sqlalchemy import or_
from sqlalchemy_utils.types.uuid import UUIDType
class House(Base):
id = Column(Integer, primary_key=True)
street = Column(UUIDType, default=uuid.uu