逗人,
我想执行sql查询并在pandas DF中获得结果。 DB是sqlite3,使用flask_sqlalchemy
我有3个与sqlalchemy应用程序绑定的数据库,使用bind关键字创建模型。这里没有问题,在每个数据库文件中都可以很好地创建表。
但是,假设我有3个DB(DB1,DB2,DB3)和每个DB中的一个表(T1,T2 ,, T3)
默认DB是DB1,DB2和DB3是DB1的绑定
我想执行此代码(sql查询是愚蠢的,这只是例如):
sql = "select T2.ID, sum(T3.val) as val
FROM T2 INNER JOIN T3 ON T2.ID = T3.ID
GROUP BY T2.ID"
df = pd.read_sql(sql, con)
此处的问题是con...
我看过许多使用con = db.get_engine(bind='***')
但这假设T2和T3在同一个数据库中,情况并非如此
这里我在2个数据库中有2个表,所以如何设置与pandas的连接?
THKS
NB:在真实系统中,一些数据库有数亿行,所以使用SQL然后使用pandas是性能方面最有效的方式,而不是使用sqlalchemy对象,如query,filter,...答案 0 :(得分:0)
我不是sqlite的专家,但是在Mysql或Postgresql中,您可以通过在查询中指定数据库的名称来访问数据库/模式中的表。 试试:
sql = "select T2.ID, sum(T3.val) as val
FROM DB2.T2
INNER JOIN DB3.T3 ON T2.ID = T3.ID
GROUP BY T2.ID"