使用SQLAlchemy对现有表执行简单SELECT语句

2024-03-29 06:10:59 发布

您现在位置:Python中文网/ 问答频道 /正文

在因特网上没有任何地方有一个关于SQLAlchemy 1.0的简单SELECT语句的简单的几行教程。

假设我已经使用create_engine()建立了数据库连接,并且我的数据库表已经存在,那么我想知道如何执行以下查询:

select
    name,
    age
from
    users
where
    name = 'joe'
    and
    age = 100

Tags: namefrom数据库agesqlalchemy地方create教程
2条回答

在试图找出相同的东西时发现了这个。

我觉得答案是这样的。我很想知道我是不是错了,或者这一切都是熊猫的天性。

要通过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

我认为下面的命令可以用来查询用户数据库表

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

http://docs.sqlalchemy.org/en/latest/core/tutorial.html

相关问题 更多 >