在 FastAPI 中从 MySQL 获取特定日期
Fetching specific date from MySQL in FastAPI
我想根据某个id (msisdn) 从mysql workbench 中获取一个日期。但我不知道如何用 SQLAlchemy 来做。 msisdn 是主键。
应模拟此查询:
SELECT
last_port
FROM
`realtime-backend`.portabilidad
WHERE
last_port='2020-04-23 6:00:00' AND
msisdn='56977095634'
型号:
class PortabilidadInfo(Base):
__tablename__ = "portabilidad"
msisdn = Column(Integer, primary_key=True)
operator_id = Column(Integer, nullable=True)
last_port = Column(Date, default=datetime.now(), nullable=True)
代码:
portabilidad_msisdn = '56977095634'
fecha_csv = '2020-04-23 6:00:00'
date_info = session.query(PortabilidadInfo).filter(PortabilidadInfo.last_port == fecha_csv).get(portabilidad_msisdn)
print("FECHA BDD OBJ: ", date_info, type(date_info))
但是我收到一条错误消息:Query.get() being called on a Query with existing criterion.
您可以将术语组合到 filter
语句中:
date_info = session.query(PortabilidadInfo).filter(
PortabilidadInfo.last_port == fecha_csv,
PortabilidadInfo.msisdn == portabilidad_msisdn,
).first()
这将检索匹配 last_port
和 portabilidad_msisdn
的第一行。
然后您可以通过 date_info.last_port
访问 last_port
的值。但是,由于您还在查询中包含此值,因此您可以只检查一行是否被 returned(所以检查是否 date_info is None
,否则使用 fecha_csv
)。
get
是一个特殊的构造,用于从 primary_key
字段中检索某些内容,不能与其他字段一起应用。
但是,由于 msisdn
是主键,该字段不能有任何重复项,因此在任何一种情况下都只能检索一行(它只会 return None
如果日期不匹配)。
我想根据某个id (msisdn) 从mysql workbench 中获取一个日期。但我不知道如何用 SQLAlchemy 来做。 msisdn 是主键。
应模拟此查询:
SELECT
last_port
FROM
`realtime-backend`.portabilidad
WHERE
last_port='2020-04-23 6:00:00' AND
msisdn='56977095634'
型号:
class PortabilidadInfo(Base):
__tablename__ = "portabilidad"
msisdn = Column(Integer, primary_key=True)
operator_id = Column(Integer, nullable=True)
last_port = Column(Date, default=datetime.now(), nullable=True)
代码:
portabilidad_msisdn = '56977095634'
fecha_csv = '2020-04-23 6:00:00'
date_info = session.query(PortabilidadInfo).filter(PortabilidadInfo.last_port == fecha_csv).get(portabilidad_msisdn)
print("FECHA BDD OBJ: ", date_info, type(date_info))
但是我收到一条错误消息:Query.get() being called on a Query with existing criterion.
您可以将术语组合到 filter
语句中:
date_info = session.query(PortabilidadInfo).filter(
PortabilidadInfo.last_port == fecha_csv,
PortabilidadInfo.msisdn == portabilidad_msisdn,
).first()
这将检索匹配 last_port
和 portabilidad_msisdn
的第一行。
然后您可以通过 date_info.last_port
访问 last_port
的值。但是,由于您还在查询中包含此值,因此您可以只检查一行是否被 returned(所以检查是否 date_info is None
,否则使用 fecha_csv
)。
get
是一个特殊的构造,用于从 primary_key
字段中检索某些内容,不能与其他字段一起应用。
但是,由于 msisdn
是主键,该字段不能有任何重复项,因此在任何一种情况下都只能检索一行(它只会 return None
如果日期不匹配)。