我正在尝试实现一个REST API,以CSV格式从SQL数据库返回记录。我想使用import csv
来进行转换,我想使用一个生成器,以便我可以流结果。
这就是我所尝试的。
def get_data(query) -> Generator[str, None, None]:
with pyodbc.connect(connStr) as conn:
with conn.cursor() as cursor:
cursor.execute(query)
while 1:
row = cursor.fetchone()
if not row: break
data = io.StringIO()
csv.writer(data).writerow(row)
yield data.getvalue()
这个方法很有效,但是我不喜欢。它看起来太冗长了,而且它创建了这么多临时的StringIO和writer对象!!请告诉我一个更好的方法。
2条答案
按热度按时间lhcgjxsq1#
我想我可以使用seek重用StringIO ...
n9vozmp42#
如果目标只是返回/产生 csv 格式的 resultset 记录值(以元组形式收集),则不需要使用
io.StringIO()
和csv.writer
: