我有一个数据库,其中包含两个表cdr
和mtr
。我想要基于列ego_id
和alter_id
的两者的联接,并且我希望将此列输出到同一数据库中的另一个表中,并以列名完整,而不使用< / em> pandas
。
这是我当前的代码:
mtr_table = Table('mtr', MetaData(), autoload=True, autoload_with=engine)
print(mtr_table.columns.keys())
cdr_table = Table('cdr', MetaData(), autoload=True, autoload_with=engine)
print(cdr_table.columns.keys())
query = db.select([cdr_table])
query = query.select_from(mtr_table.join(cdr_table,
((mtr_table.columns.ego_id == cdr_table.columns.ego_id) &
(mtr_table.columns.alter_id == cdr_table.columns.alter_id))),
)
results = connection.execute(query).fetchmany()
当前,对于我的测试代码,我要做的是将结果转换为熊猫数据框,然后将其放回原始SQL数据库中:
df = pd.DataFrame(results, columns=results[0].keys())
df.to_sql(...)
但是我有两个问题:
results
中,并且需要results[0].keys()
来访问我已经检查了其他stackoverflow question,但是它使用了sqlalchemy的ORM框架,很遗憾,我不理解。如果有更简单的方法(例如熊猫的to_sql
),我认为这样做会更容易。
最简单的方法是什么?
答案 0 :(得分:0)
所以我发现了如何通过TVar
来做到这一点:
CREATE TABLE AS
查询字符串似乎对括号非常敏感。如果我用括号括起整个query = """
CREATE TABLE mtr_cdr AS
SELECT
mtr.idx,cdr.*
FROM mtr INNER JOIN cdr
ON (mtr.ego_id = cdr.ego_id AND mtr.alter_id = cdr.alter_id)""".format(new_table)
with engine.connect() as conn:
conn.execute(query)
语句,则它不起作用。