我想模拟数据库连接并执行。我正在使用SQLAlchemy。这是在我的__init__.py
文件
app = Flask(__name__)
app.config.from_object(ANALYTICS_CONFIG)
app.json_encoder = ModelEncoder
db = SQLAlchemy(app)
然后在我的模型中,我有以下功能:
def get_campaigns(self, start, end, columns, filter=None):
page_view = PageView.__table__
unique = self.get_attribution_subquery(start, end, filter)
table_columns = text(', '.join(['campaign_' + c for c in columns]))
where_clause = text(' AND '.join(['campaign_%s IS NOT NULL' % c for c in columns]))
join_clause = self.get_attribution_model_join_clause(unique)
query = select([
table_columns,
func.count(page_view.c.id),
func.count(unique.c.submission_id)
]).select_from(
unique.join(
page_view,
join_clause
)
).where(
where_clause
).group_by(
table_columns
)
result = db.engine.execute(query)
result_columns = columns + ['views', 'conversions']
campaigns = []
for row in result:
row = dict(zip(result_columns, row))
row['conversionRate'] = self.get_rate(row['conversions'], row['views'])
campaigns.append(row)
return campaigns
我不想连接到数据库,我想伪造db.engine.execute(query)
的返回。我正在考虑修补猴子,但我不确定如何做到这一点或如何解决这个问题。