<p>在试图找出相同的东西时发现了这个。</p>
<p>我觉得答案是这样的。我很想知道我是不是错了,或者这一切都是熊猫的天性。</p>
<p>要通过SQLAlchemy从表中选择数据,需要在SQLAlchemy中构建该表的表示。如果Jupyter Notebook的响应速度是任何指示,则在执行a/查询之前,不会填充该表示(使用来自现有数据库的数据)。</p>
<p>您需要<code>Table</code>来构建表。您需要<code>select</code>从数据库中选择数据。你需要<code>metadata</code>。。。原因尚不清楚,甚至在文档中(<a href="http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.MetaData" rel="noreferrer">http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.MetaData</a>)。</p>
<pre><code>from sqlalchemy import create_engine, select, MetaData, Table
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]).where(table.columns.column_name == 'filter')
connection = engine.connect()
results = connection.execute(stmt).fetchall()
</code></pre>
<p>然后您可以对结果进行迭代。</p>
<pre><code>for result in results:
print(result)
</code></pre>
<p>我在本地数据库中检查了这个,SQLAlchemy结果不等于原始SQL结果。对我的数据集来说,不同之处在于数字的格式。SQL返回float64(例如<code>633.07</code>),而SQLAlchemy返回对象(我认为<code>Decimal</code>,例如<code>633.0700000000</code>)</p>
<p>这里有些帮助:<a href="https://www.datacamp.com/courses/introduction-to-relational-databases-in-python" rel="noreferrer">https://www.datacamp.com/courses/introduction-to-relational-databases-in-python</a></p>