在任何Python程序中,在本地dataframes上执行内联SQL
项目描述
Inline SQL
一种简单的内嵌语言,用于在Python程序中执行内联SQL。
from inline_sql import sql, sql_val
assert sql_val^ "SELECT 1 + 1" == 2
x = 5
assert sql_val^ "SELECT $x * 2" == 10
df = sql^ "SELECT * FROM (VALUES (1, 10), (2, 20)) df (x, y)"
assert sql_val^ "SELECT SUM(x) + SUM(y) FROM df" == 33
inline_sql
库中的操作直接在您的进程中运行。您可以直接查询本地数据集(pandas frames)、CSV文件,甚至可以无缝地插入变量。它通过一个小封装器实现,所以它非常快。
安装
支持Python 3.7+,已在所有主要操作系统上进行了测试。
pip install inline-sql
用法
导出的sql
和sql_val
变量是魔法对象,可用于运行查询。查询可以通过名称从本地dataframes中读取,并可以使用美元符号进行参数嵌入。
>>> from inline_sql import sql, sql_val
>>> sql_val^ "SELECT 1 + 1"
2
>>> x = 5
>>> sql_val^ "SELECT 2 * $x"
10
>>> sql^ "SELECT * FROM 'disasters.csv' LIMIT 5"
Entity Year Deaths
0 All natural disasters 1900 1267360
1 All natural disasters 1901 200018
2 All natural disasters 1902 46037
3 All natural disasters 1903 6506
4 All natural disasters 1905 22758
>>> disasters = sql^ "SELECT * FROM 'disasters.csv'"
>>> def total_deaths(entity: str) -> float:
... return sql_val^ "SELECT SUM(deaths) FROM disasters WHERE Entity = $entity"
...
>>> total_deaths("Drought")
11731294.0
>>> total_deaths("Earthquake")
2576801.0
您可以根据DuckDB文档中的描述运行任何SQL查询。
库使用
您可以将inline_sql
用作库。由于查询的结果是普通的pandas.DataFrame
对象,它们可以在函数和应用程序代码中使用。以下是一个更长的示例
import pandas as pd
from inline_sql import sql, sql_val
def head_data(count: int) -> pd.DataFrame:
return sql^ "SELECT * FROM 'cars.csv' LIMIT $count"
cars = head_data(50)
origin_counts = sql^ """
SELECT origin, COUNT() FROM cars
GROUP BY origin
ORDER BY count DESC
"""
print(origin_counts)
most_common = origin_counts.origin[0]
print(sql_val^ """
SELECT AVG(horsepower) FROM cars
WHERE origin = $most_common
""")
通常,sql_val
用于运行标量查询,而sql
用于运行返回表的查询。
致谢
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
inline_sql-0.1.2.tar.gz (22.4 kB 查看哈希值)
构建分发
inline_sql-0.1.2-py3-none-any.whl (5.3 kB 查看哈希值)
关闭
inline_sql-0.1.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c0ad4826c1eb243dbcfcb1958a94191578d65bddc3a26633c60862062a86612d |
|
MD5 | 45ed9a8e98640a02b4959362bc6f2267 |
|
BLAKE2b-256 | 808fec43ae1be399c3283aa41a48c84d4e01f09e1864eb7d962b62f4b74de90b |
关闭
inline_sql-0.1.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5db7c6691fa4cda7588e450e6b2219de27b0ae099d82125e65768629c245b2dc |
|
MD5 | af9702c16e8a67fecac687721f6bc008 |
|
BLAKE2b-256 | 2e18469972571d201e43556e298069f7dddbe6417a90031e1987dfa86f802e8f |