【发布时间】:2020-02-08 01:18:18
【问题描述】:
我有一个程序用来从我的站点中提取调查数据。我用 Python 编写了它,它将从 sql 数据库中获取信息,并将其下载到 csv 文件中。它工作得很好,但现在它只是一个没有信息且没有大小的空白 csv 文件。下面是我用于拉取的程序。我现在使用 python 3.7.4。
import pymysql.cursors
import csv
import sshtunnel
from sshtunnel import SSHTunnelForwarder
server = SSHTunnelForwarder(
('ADDRESS', PORT),
ssh_username='USERNAME',
ssh_password='PASS',
remote_bind_address=('127.0.0.1', 3306)
)
server.start()
def find_number(result, number):
if str(number) in result['p4'].split(','):
return 1
if str(number) in result['p3'].split(','):
return 2
if str(number) in result['p2'].split(','):
return 3
if str(number) in result['p1'].split(','):
return 4
if str(number) in result['z'].split(','):
return 5
if str(number) in result['n1'].split(','):
return 6
if str(number) in result['n2'].split(','):
return 7
if str(number) in result['n3'].split(','):
return 8
if str(number) in result['n4'].split(','):
return 9
return 'not found: ' + str(number)
# Connect to the database
conn = pymysql.connect(host='127.0.0.1',
user='USER',
password='PASS',
db='DBNAME',
charset='utf8mb4',
port=server.local_bind_port,
cursorclass=pymysql.cursors.DictCursor)
cursor = conn.cursor()
sql = "SELECT * FROM `surveys` order by id asc"
cursor.execute(sql)
results = cursor.fetchall()
output = {}
headers = []
comments = []
for result in results:
headers.append(str(result['gender']) + '/' + str(result['birth_year']) + '/' + str(result['political_affiliation']) + '/' + str(result['religious_belief']) + '/' + str(result['ethnicity']) + '/' + str(result['location']))
for nr in range(1, 37):
if not nr in output:
output[nr] = []
nrr = find_number(result, nr)
output[nr].append(nrr)
comments.append(result['comments'])
writer = csv.writer(open("output5.csv", 'w', newline=''))
writer.writerow(headers)
for row in output:
writer.writerow(output[row])
writer.writerow(comments)
conn.close()
【问题讨论】: