【问题标题】:Sqlalchemy pass parameter in session.querysession.query 中的 Sqlalchemy 传递参数
【发布时间】:2020-10-21 00:23:42
【问题描述】:

我试图从字典中插入表名和列名作为参数

for key in columns_mapping:
    query = session.query(columns_mapping[key]['TABLE'].columns_mapping[key]['Name']).distinct()
    df = pd.read_sql(query.statement, query.session.bind)
    df = clean_format_table(df, columns_mapping[key]['Name'])
    exist_connectors = df[columns_mapping[key]['Name']]
    new_query = session.query(ReportCyclePopulation.columns_mapping[key]['Name']).distinct(). \
        filter(ReportCyclePopulation.columns_mapping[key]['Name'].notin_(tuple(exist_connectors)))
    df_new = pd.read_sql(new_query.statement, new_query.session.bind)
    df_new = clean_format_table(df_new, 'location_from')
    key = columns_mapping[key]['FORMAT'](df_new,columns_mapping[key]['Name'], columns_mapping[key]['COLUMN'])
    session.bulk_insert_mappings(columns_mapping[key]['TABLE'], key.to_dict(orient="records"))
    session.commit()

但我收到此错误- 执行(code_obj,self.user_global_ns,self.user_ns) 文件“”,第 2 行,在 查询 = session.query(columns_mapping[key]['TABLE'].columns_mapping[key]['Name']).distinct() AttributeError:“str”对象没有属性“columns_mapping”

我如何将字典的值传递给查询

【问题讨论】:

  • 你的意思是用逗号代替句号吗?

标签: python pandas dictionary sqlalchemy


【解决方案1】:

在字典中使用字符串而不是类是我的错 例如:

    columns_mapping = {'loads': {
            'TABLE': LoadConnector,
            'NAME':'loads',
            'FORMAT': load_connectors_table,
            'COLUMN':'load_connector',
        },

在查询中我使用了这个

    for key in columns_mapping:
        query = session.query(getattr(columns_mapping[key]['NEWTABLE'], columns_mapping[key]['NAME'])).distinct()
        df = pd.read_sql(query.statement, query.session.bind)
        df = clean_format_table(df, columns_mapping[key]['NAME'])

及其按预期工作 希望你能喜欢这个答案

【讨论】:

    猜你喜欢
    • 2013-10-19
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 2018-06-14
    • 2018-04-10
    • 2016-10-23
    • 2015-03-16
    相关资源
    最近更新 更多