Rya*_*uck 9 python mysql select sqlalchemy
在互联网上没有任何地方存在一个SELECT关于SQLAlchemy 1.0 的简单语句的简单的几行教程.
假设我已经建立了数据库连接create_engine(),并且我的数据库表已经存在,我想知道如何执行以下查询:
select
name,
age
from
users
where
name = 'joe'
and
age = 100
Run Code Online (Sandbox Code Playgroud)
在试图弄清楚同一件事时发现了这一点。
这是我的答案。我很想知道我是否/在哪里错了,或者这是否现在已经内置在熊猫中了。
要通过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()
Run Code Online (Sandbox Code Playgroud)
然后,您可以遍历结果。
for result in results:
print(result)
Run Code Online (Sandbox Code Playgroud)
我使用本地数据库进行了检查,SQLAlchemy结果与原始SQL结果不相等。对于我的数据集,不同之处在于数字的格式。SQL返回float64(例如633.07),而SQLAlchemy的返回的对象(我想Decimal,如633.0700000000。)
来自此处的一些帮助:https : //www.datacamp.com/courses/introduction-to-relational-databases-in-python
小智 5
坚持使用 SQL 炼金术来解决这个问题似乎过于复杂。相反,您可以做的是将 SQL alchemy 引擎组件传递给 pandas.read_sql(sql,conn)。 https://pandas.pydata.org/docs/reference/api/pandas.read_sql.html
from sqlalchemy import create_engine
import pandas as pd
engine = create_engine(.....)
sql = "select name, age from users where name = 'joe' and age = 100"
df = pd.read_sql(sql,con=engine)
Run Code Online (Sandbox Code Playgroud)