对于大部分sqlboys和sqlgirls而言,只关心我的sql提交到以上数据库,返回给我一个pandas的dataframe即可。所以必要的输入包括sql和数据库连接信息(包括地址,port, 账号密码)即可。
- from sqlachemy import create_engine
- import pandas as pd
- # 数据库连接地址
- engine = create_engine("mysql://root:123456@127.0.0.1:3306/database")
- # 用户要查询的sql
- sql = "select * from users limit 10"
- df = pd.read_sql_query(sql, engine)
presto
- # presto
- uri = "presto://username:password@127.0.0.1:8080/database?source=pyhive"
- sql = "select * from users limit 10"
- df = pd.read_sql_query(sql, create_engine(uri))
mysql
- # mysql
- uri = "mysql://root:123456@127.0.0.1:3306/database"
- sql = "select * from users limit 10"
- df = pd.read_sql_query(sql, create_engine(uri))
druid
- # druid
- uri = "druid://<User>:<password>@<Host>:<Port-default-9088>/druid/v2/sql"
- sql = "select count(*) from users where _time> TIME_SHIFT...."
- df = pd.read_sql_query(sql, create_engine(uri))
更多数据库连接方式:
基本上市面上所有的数据库,只要该数据库支持sqlalchemy dialect和对应的python driver,都可以按照上面的套路去无脑操作。简单省心。
核心只需要一行代码即可:
- df = pd.read_sql_query(sql, create_engine(uri))