在互联网上没有任何地方存在关于SQLAlchemy 1.0的简单SELECT
语句的简单的几行教程。
假设我已经使用create_engine()
,建立了我的数据库连接,并且我的数据库表已经存在,我想知道如何执行以下查询:< / p>
select
name,
age
from
users
where
name = 'joe'
and
age = 100
答案 0 :(得分:3)
在试图弄清楚同一件事时发现了这一点。
这是答案对我的显示方式。我很想知道我是否/错在哪里,或者这是否现在已经全部内置在熊猫中了。
要通过SQLAlchemy从表中选择数据,您需要在SQLAlchemy中构建该表的表示形式。如果Jupyter Notebook的响应速度有任何指示,则直到执行a /查询时,该表示才会被填充(使用现有数据库中的数据)。
您需要Table
来建立表格。您需要select
从数据库中选择数据。您需要metadata
...出于不清楚的原因,即使在文档(http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.MetaData)中也是如此。
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()
然后您可以遍历结果。
for result in results:
print(result)
我用本地数据库检查了此结果,SQLAlchemy结果与原始SQL结果不相等。对于我的数据集,不同之处在于数字的格式。 SQL返回float64(例如633.07
),而SQLAlchemy返回对象(我认为Decimal
,例如633.0700000000
。)
一些帮助:https://www.datacamp.com/courses/introduction-to-relational-databases-in-python
答案 1 :(得分:0)
由于原始问题在select语句中有两列,因此可能使某些人对使用该语句的书写方式感到困惑:
from sqlalchemy import and_
stmt = select([users.columns.name,users.columns.age])
stmt= stmt.where(and_(name=='joe',age==100)
for res in connection.execute(stmt):
print(res)
答案 2 :(得分:-3)
我认为以下内容适用于查询用户数据库表
from sqlalchemy.sql import and_
s = select([users]).where(and_(users.c.name == 'joe', users.c.age == 100))
for row in conn.execute(s):
print row