【问题标题】:Write query rows in csv python在csv python中编写查询行
【发布时间】:2014-04-06 15:56:44
【问题描述】:

我正在编写一个脚本来将查询结果行写入 csv 文件。数据是电子邮件地址,如下所示:

email1@mail.com

email2@mail.com

email3@mail.com

现在,我的代码将结果写入 csv 文件,如下所示:

('email1@mail.com'), ('email2@mail.com'), ('email3@mail.com'),

如何使用下一行而不是行?

编辑:似乎我的查询给了我括号之间的数据,例如('email1@mail.com'),

代码如下:

import pymysql
import csv

db = pymysql.connect(host="localhost", port=3306, user="foo", passwd="bar", db="db")
cursor = db.cursor()

query3 = """SELECT email FROM tmp"""


cursor.execute(query)

data = cursor.fetchall()
list = []

for row in data :
  value = str(row)
  list.append(value)    
  file = open('file.csv', 'wb')
  data = csv.writer(file)
  data.writerow(list)

cursor.close()
db.close()
file.close()

【问题讨论】:

    标签: python csv pymysql


    【解决方案1】:

    以下内容似乎可以解决您的问题:

    f = csv.writer(open("file.csv", "w"))
    for row in data:
        f.writerow([str(row)])
    

    如需更详细/合适的解决方案,您必须向我们提供更多详细信息,例如您的输入格式是什么样的,您希望输出文件是什么样的(实际数据,而不是抽象的“a、b、c”)。

    附带说明,不要将变量称为listfile。这些名称会影响内置列表/文件类型。

    编辑:如果您所做的只是每行写一个电子邮件地址,那么您实际上并不是在使用 CSV,也不需要该模块。这是我要做的:

    f = open("file.txt", "w")
    for i in email_addresses:
        f.write(i + "\n")
    

    【讨论】:

    • 太好了,它解决了我的问题!我为数据类型编辑了我的帖子。
    • 你完全正确。现在效果很好,我明白为什么。谢谢!
    【解决方案2】:

    像 pymysql 这样的模块符合 Python DB API。游标的fetchall() 方法返回一个元组列表。每个元组代表数据库查询中的一行。将其转换为字符串可能无法满足您的需求:

    >>> str((1, ))
    '(1,)'
    

    writerow 方法期望得到一个序列,序列的每个元素都作为行中的值输出,并根据所选格式使用适当的表示和分隔符。

    您当前的逻辑循环遍历您的数据库查询返回的所有行。每次循环时,它都会将另一个(可能不正确的)值添加到列表中,打开一个文件进行写入,并写出当前列表。由于每次迭代都会创建一个新文件,因此您只会看到上次迭代中写入的内容。

    这里的代码可以做你想做的事情。

    import csv
    
    data = [("first",), ("second",), ("Third",)]
    list = []
    
    file = open('file.csv', 'wb')
    writer = csv.writer(file)
    for row in data :
        writer.writerow(row)
    file.close()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 2017-05-04
      • 2015-02-13
      相关资源
      最近更新 更多