Sqlalchemy pass parameter in session.query



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

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()

但我得到这个错误- exec(code_obj, self.user_global_ns, self.user_ns( 文件 ",第 2 行,在 query = session.query(columns_mapping[key]['TABLE'].columns_mapping[key]['Name'](.distinct(( 属性错误:"str"对象没有属性"columns_mapping">

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

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

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'])

及其作品如预期 希望你能喜欢这个答案

最新更新