Salida de consulta SQL a .csv

Estoy ejecutando una consulta SQL desde la API de python y quiero recostackr datos en formato Estructurado (datos de columnas en su encabezado) .CSV.

Este es el código que tengo hasta ahora.

sql = "SELECT id,author From researches WHERE id < 20 " cursor.execute(sql) data = cursor.fetchall() print (data) with open('metadata.csv', 'w', newline='') as f_handle: writer = csv.writer(f_handle) header = ['id', 'author'] writer.writerow(header) for row in data: writer.writerow(row) 

Ahora los datos se están imprimiendo en la consola pero no ingresando en el archivo .CSV, esto es lo que obtengo como resultado :

¿Qué es lo que me falta?

    Aquí hay un ejemplo simple de lo que estás tratando de hacer:

     import sqlite3 as db import csv # Run your query, the result is stored as `data` with db.connect('vehicles.db') as conn: cur = conn.cursor() sql = "SELECT make, style, color, plate FROM vehicle_vehicle" cur.execute(sql) data = cur.fetchall() # Create the csv file with open('vehicle.csv', 'w', newline='') as f_handle: writer = csv.writer(f_handle) # Add the header/column names header = ['make', 'style', 'color', 'plate'] writer.writerow(header) # Iterate over `data` and write to the csv file for row in data: writer.writerow(row) 
     import pandas as pd import numpy as np from sqlalchemy import create_engine from urllib.parse import quote_plus params = quote_plus(r'Driver={SQL Server};Server=server_name; Database=DB_name;Trusted_Connection=yes;') engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params) sql_string = '''SELECT id,author From researches WHERE id < 20 ''' final_data_fetch = pd.read_sql_query(sql_string, engine) final_data_fetch.to_csv('file_name.csv') 

    ¡Espero que esto ayude!