在试图弄清楚同样的事情时发现了这个。
要通过 SQLAlchemy 从表中选择数据,您需要在 SQLAlchemy 中构建该表的表示。如果 Jupyter Notebook 的响应速度有任何指示,则在执行查询之前不会填充该表示(使用现有数据库中的数据)。
您需要Table 来构建表格。您需要select 从数据库中选择数据。您需要 metadata... 的原因尚不清楚,即使在 the docs 中也是如此。
from sqlalchemy import create_engine, select, MetaData, Table, and_
engine = create_engine("dburl://user:pass@database/schema")
metadata = MetaData(bind=None)
table = Table(
'table_name',
metadata,
autoload=True,
autoload_with=engine
)
stmt = select([
table.columns.column1,
table.columns.column2
]).where(and_(
table.columns.column1 == 'filter1',
table.columns.column2 == 'filter2'
))
connection = engine.connect()
results = connection.execute(stmt).fetchall()
然后您可以迭代结果。请参阅SQLAlchemy query to return only n results?,了解如何返回一行或仅几行数据,这对于较慢/较大的查询很有用。
for result in results:
print(result)
我用本地数据库检查了这个,SQLAlchemy 结果不等于原始 SQL 结果。对于我的数据集,不同之处在于数字的格式。 SQL返回float64(例如633.07),而SQLAlchemy返回对象(我认为Decimal,例如633.0700000000。)
来自DataCamp's Introduction to Databases in Python的一些帮助