2017-10-09 60 views
1

我有一个脚本来向MySQL发送查询并将结果写入文件。我的问题是,文本输出看起来是这样的:将元组转换为字符串列表,每行一个项目

(u'DB11A-DBD27', u'DB11A-DBD28')(u'DB62A-DBD1', u'DB62A-DBD2')(u'DB62A-DBD11', u'DB62A-DBD12')... 

而且我想它看起来就像这样:

DB11A-DBD27 
DB11A-DBD28 
DB62A-DBD1 
DB62A-DBD2 
DB62A-DBD11 
DB62A-DBD12 
... 

下面是代码:

cnx = connectDB.cnx 
query = "SELECT DB-P1,DB-P2 FROM distribution" 

cur = cnx.cursor() 
sql = cur.execute(query) 

results = cur.fetchall() 
f = open('Master.txt', 'w') 
for row in results: 
    row = str(row) 
    print "".join(row) 
    f.write(row) 
f.close() 

我试着strip()但不断出现类型错误。有谁知道我可以如何将这些元组转换为字符串列表中的每个项目在一个新行中,如上所示?

+0

结果是什么?你能打印结果的输出吗?看起来你需要再次解压缩? – Bahrom

+1

它看起来像你只是想选择db-p1联合所有db-p2 ...'选择DB-P1从发行版所有SELECT DB-P2从发行版# – xQbert

回答

1

我想你只是需要一个工会在这里和两个选择。

替代unionu nion以下。它不会让我保存与union

cnx = connectDB.cnx 
query = "SELECT DB-P1 Z FROM distribution u nion all SELECT DB-P2 FROM distribution" 

cur = cnx.cursor() 
sql = cur.execute(query) 

results = cur.fetchall() 
f = open('Master.txt', 'w') 
for row in results: 
    row = str(row) 
    print "".join(row) 
    f.write(row) 
f.close() 

但是,如果为了问题上,我们可能需要知道餐桌上的唯一关键,所以我们可以适当地订购。

+0

我添加了联合,它确实分割了元组,但是我的输出文件还是相同的格式。我如何摆脱你,()并保存他们每行1项? – Damon

+0

你需要'print'“.join(row)'不能for循环现在只是'f.write(str(row))'?因为我们每行只有1个值?我绝不是一个蟒蛇大师。 SQL是我的辖区。你也可以看到类似的问题:https://stackoverflow.com/questions/6182964/why-is-parenthesis-in-print-voluntary-in-python-2-7 – xQbert

+0

经过进一步审查:我很确定你'在此之后:使用csv输出的https://stackoverflow.com/questions/20618640/how-to-write-to-file-without-parenthesis-in-python;或者将'str(row)'行改为建议的内容。 – xQbert

相关问题