【问题标题】:Convert tuple to string list with one item per line将元组转换为字符串列表,每行一项
【发布时间】:2017-10-09 19:59:37
【问题描述】:

我有一个脚本可以向 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(),但不断收到类型错误。有谁知道如何将这些元组转换为字符串列表,每个项目都在一个新行中,如上所示?

【问题讨论】:

  • results 中有什么内容?你可以打印结果的输出吗?看起来您需要重新打开包装?
  • 看来你只想选择 db-p1 union all db-p2...SELECT DB-P1 FROM distribution u nion all SELECT DB-P2 FROM distribution

标签: python mysql python-2.7 list tuples


【解决方案1】:

我认为你只需要一个联合和两个选择。

union 替换下面的u 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()

但是,如果订单很重要,我们可能需要知道桌子上的唯一键,以便我们可以适当地订购。

【讨论】:

  • 我添加了联合,它确实拆分了元组,但我的输出文件格式仍然相同。如何摆脱 u, () 并每行保存 1 项?
  • 你需要print "".join(row )吗?难道for循环现在不能是f.write(str(row))吗?因为我们每行只有 1 个值?我绝不是蟒蛇大师。 SQL 是我的职责。也可以看到类似的问题:stackoverflow.com/questions/6182964/…
  • 经过进一步审查:我很确定您在此之后:stackoverflow.com/questions/20618640/… 使用 csv 输出;或将str(row) 行更改为建议的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多