Python 如何在sqlalchemy中将select_从对象转换为新表
我有一个数据库,其中包含两个数据表,Python 如何在sqlalchemy中将select_从对象转换为新表,python,sqlalchemy,Python,Sqlalchemy,我有一个数据库,其中包含两个数据表,cdr和mtr。我希望根据列ego\u id和alter\u id将这两个列连接起来,并将其输出到同一数据库中的另一个表中,包括列名,而不使用pandas 以下是我当前的代码: mtr_table = Table('mtr', MetaData(), autoload=True, autoload_with=engine) print(mtr_table.columns.keys()) cdr_table = Table('cdr', MetaData(),
cdr
和mtr
。我希望根据列ego\u id
和alter\u id
将这两个列连接起来,并将其输出到同一数据库中的另一个表中,包括列名,而不使用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(...)
但我有两个问题:
- 当我开始处理完整的数据库时,将所有内容加载到数据帧中需要太多内存
- 列名称(显然)不包括在
结果中,需要由
结果[0]访问。keys()
最简单的方法是什么?因此,我通过
创建表为了解了如何做到这一点:
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)
不过,查询字符串似乎对括号高度敏感。如果我用括号括住整个SELECT…FROM…
语句,它就不起作用了