使用python将mysql查询写入csv,需要显示字段名称

2024-01-07

我有以下内容:

import MySQLdb as dbapi
import sys
import csv

dbServer='localhost'
dbPass='supersecretpassword'
dbSchema='dbTest'
dbUser='root'

dbQuery='SELECT * FROM pbTest.Orders;'

db=dbapi.connect(host=dbServer,user=dbUser,passwd=dbPass)
cur=db.cursor()
cur.execute(dbQuery)
result=cur.fetchall()

c = csv.writer(open("temp.csv","wb"))
c.writerow(result)

这会产生乱码。我熟悉使用打印记录[0]等。不知道应该如何设置格式。生成类似于控制台中查询的内容。我无法从 mysql 服务器执行简单的 INTO OUTFILE。


Update

已经8年了;我仍然偶尔收到有关此问题的更新或查询。

正如一些评论中所述,光标.描述 https://www.python.org/dev/peps/pep-0249/#description来自 DBAPI 就是我正在寻找的。

这是 Python 3 中的一个更现代的示例,使用pymysql https://pymysql.readthedocs.io/en/latest/要连接的驱动程序MariaDB https://mariadb.org,它将选择所有行并将其提取到一个元组中,将行标题/描述提取到一个列表中。然后我将这两个数据结构合并到一个列表中,即写入 csv 文件 https://docs.python.org/3.7/library/csv.html#csv.writer.

标题名称是结果列表中的第一个条目;以线性方式将结果写入文件可确保行标题是 CSV 文件中的第一行。

import pymysql
import csv
import sys

db_opts = {
    'user': 'A',
    'password': 'C',
    'host': 'C',
    'database': 'D'
}

db = pymysql.connect(**db_opts)
cur = db.cursor()

sql = 'SELECT * from schema_name.table_name where id=123'
csv_file_path = '/tmp/my_csv_file.csv'

try:
    cur.execute(sql)
    rows = cur.fetchall()
finally:
    db.close()

# Continue only if there are rows returned.
if rows:
    # New empty list called 'result'. This will be written to a file.
    result = list()

    # The row name is the first entry for each entity in the description tuple.
    column_names = list()
    for i in cur.description:
        column_names.append(i[0])

    result.append(column_names)
    for row in rows:
        result.append(row)

    # Write result to file.
    with open(csv_file_path, 'w', newline='') as csvfile:
        csvwriter = csv.writer(csvfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
        for row in result:
            csvwriter.writerow(row)
else:
    sys.exit("No rows found for query: {}".format(sql))

您可以将所有结果转储到 csv 文件而不循环:

rows = cursor.fetchall()
fp = open('/tmp/file.csv', 'w')
myFile = csv.writer(fp)
myFile.writerows(rows)
fp.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用python将mysql查询写入csv,需要显示字段名称 的相关文章

  • 如何使用一个模型中间层的输出作为另一个模型的输入?

    我训练一个模型A并尝试使用中间层的输出name layer x 作为模型的附加输入B 我尝试像 Keras 文档一样使用中间层的输出https keras io getting started faq how can i obtain th
  • Keras model.predict 函数给出输入形状错误

    我已经在 Tensorflow 中实现了通用句子编码器 现在我正在尝试预测句子的类概率 我也将字符串转换为数组 Code if model model type universal classifier basic class probs
  • 来自 pandas 数据帧的烛台图,用日期替换索引

    此代码给出了带有移动平均线的烛台图 但 x 轴位于索引中 我需要 x 轴位于日期中 需要做什么改变 import numpy as np import pandas as pd import matplotlib pyplot as plt
  • jdbc4.MySQLSyntaxErrorException:数据库中不存在表

    我正在使用 SpringBoot 开发一个网络应用程序 这是我的application properties文件来指定访问数据库的凭据 spring datasource driverClassName com mysql jdbc Dri
  • 将 Python Pandas DataFrame 写入 Word 文档

    我正在努力创建一个使用 Pandas DataFrames 的 Python 生成的报告 目前我正在使用DataFrame to string 方法 但是 这会作为字符串写入文件 有没有办法让我实现这一目标 同时将其保留为表格 以便我可以使
  • 无法在 virtualenv 中安装 libxml2

    我有一个问题libxml2蟒蛇模块 我正在尝试将其安装在python3 虚拟环境使用以下命令 pip install libxml2 python3 但它显示以下错误 Collecting libxml2 python3 Using cac
  • 带有 mkdocs 的本地 mathjax

    我想在无法访问互联网的计算机上使用 MathJax 和 Mkdocs 因此我不能只调用 Mathjax CDN Config mkdocs yml site name My Docs extra javascript javascripts
  • 如何从hdfs读取文件[重复]

    这个问题在这里已经有答案了 我在 project1目录下的hadoop文件系统中有一个文本文件名mr txt 我需要编写 python 代码来读取文本文件的第一行 而不将 mr txt 文件下载到本地 但我无法从 hdfs 打开 mr tx
  • MySQL:如何仅获取正值的平均值?

    假设我有 INT 列 并且我使用 1 来表示插入时没有可用数据 我想获得该列中所有 0 或更大值的平均值 这可能吗 Thanks 我忘了提及 我正在与其他 AVG 一起执行此操作 因此从选项卡中选择 avg a avg b avg d 所以
  • python Recipe:列出最接近等于值的项[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 考虑像这样的列表 0 3 7 10 12 15 19 21 我想获得最接近任何值的最近的最小数字 所以如果我通过4 我会得到3 如果我
  • Django 2、python 3.4 无法解码 urlsafe_base64_decode(uidb64)

    我正在尝试通过电子邮件激活用户 电子邮件有效 编码有效 我使用了 django1 11 中的方法 该方法运行成功 在 Django 1 11 中 以下内容成功解码为 28 其中 uidb64 b Mjg force text urlsafe
  • 为什么 Collections.counter 这么慢?

    我正在尝试解决罗莎琳德的基本问题 即计算给定序列中的核苷酸 并在列表中返回结果 对于那些不熟悉生物信息学的人来说 它只是计算字符串中 4 个不同字符 A C G T 出现的次数 我期望collections Counter是最快的方法 首先
  • 是否可以在Python中将日+月(不是年)与当前日+月进行比较?

    我正在获取 5 月 10 日 格式的数据 我试图弄清楚它是今年还是明年 该日期仅一年 因此 5 月 10 日表示 2015 年 5 月 10 日 而 5 月 20 日表示 2014 年 5 月 20 日 为此 我想将字符串转换为日期格式并进
  • 是否可以使用 Anaconda 包作为 Google Cloud Functions 的依赖项?

    我正在使用 Python 运行时编写 Google Cloud Function 我需要包含一些无法使用的依赖项pip 如文档中所述here https cloud google com functions docs writing spe
  • Python 读取未格式化的直接访问 Fortran 90 给出不正确的输出

    这是数据的写入方式 它是一个二维浮点矩阵 我不确定大小 open unit 51 file rmsd nn output form unformatted access direct status replace recl Npoints
  • 如何使用 enumerate 来倒数?

    letters a b c 假设这是我的清单 在哪里for i letter in enumerate letters 将会 0 a 1 b 2 c 我怎样才能让它向后枚举 如 2 a 1 b 0 c 这是一个很好的解决方案并且工作完美 i
  • 没有名为“turtle”的模块

    我正在学习并尝试用Python3制作贪吃蛇游戏 我正在进口海龟 我正在使用 Linux mint 19 PyCharm python37 python3 tk Traceback most recent call last File hom
  • pandas.read_fwf 忽略提供的数据类型

    我正在从文本文件导入数据框 我想指定列的数据类型 但 pandas 似乎忽略了dtype input 一个工作示例 from io import StringIO import pandas as pd string USAF WBAN S
  • 使用 MPI 的 Allreduce 对 Python 对象求和

    我正在使用使用 Python 中的字典和计数器构建的稀疏张量数组操作 我想让并行使用这个数组操作成为可能 最重要的是 我最终在每个节点上都有计数器 我想使用 MPI Allreduce 或另一个不错的解决方案 将其添加在一起 例如 使用计数
  • 如何同时接受int和float类型的输入?

    我正在制作一个货币转换器 如何让 python 同时接受整数和浮点数 我就是这样做的 def aud brl amount From to ER 0 42108 if amount int if From strip aud and to

随机推荐

  • Typo3:8.7.9 CKeditor 保存后删除块样式

    我在 Typo3 中有以下 CKEditor 的 YAML 配置 Load default processing options imports resource EXT rte ckeditor Configuration RTE Pro
  • 捕获多个异常并重新抛出一般异常

    我使用反射将一些数据添加到第三方库中的类内的私有变量中 一路上大约有四种不同的异常可以抛出 所有这些都与反射有关 而且所有这些都不太可能发生 我正在对所涉及的类和变量的名称进行硬编码 我不太可能收到任何未找到类或未找到字段的错误 除非图书馆
  • 如何在屏幕上显示PIL图像?

    我正在使用 PIL 库进行一些图像编辑 关键是 我不想每次都将图像保存在硬盘上以便在资源管理器中查看 是否有一个小模块可以让我简单地设置一个窗口并显示图像 从接近年初开始PIL教程 https web archive org web 202
  • 导入酶后加载模块 DomUtils 时出现 Webpack 错误

    我有一个使用 TypeScript 和 React 0 14 的项目 我用 karma mocha chai 设置了测试环境 以及它的工作 但是当我导入并使用酶中的函数时 我在浏览器中收到错误 来自 Chrome 的人类可读错误 Uncau
  • 将 ipad 应用程序转换为在 iPhone 上运行(通用应用程序)

    我有一个可以运行的 iPad 应用程序 现在需要在 iPhone 上运行它 我已经阅读了相当多的内容 但还没有找到一个好的答案 在这个网站上 我看到了一些讨论 但同样没有明确的答案 有谁知道有什么教程吗 我已经在我的代码中捕获了它是否是 i
  • 如何更改Flutter应用程序的名称?

    我刚刚按照以下说明制作了一个 Flutter 应用程序这一页 https codelabs developers google com codelabs first flutter app pt2 0 我用谷歌搜索了如何更改应用程序的名称
  • Java迭代固定长度的数组并使用Scanner类获取值

    如何使用固定长度为 2 的 Scanner 类获取 java 数组的值 并且它将迭代直到其值等于给定值 例如 对于以下输入 A G N H D F 我使用 Scanner 类编写了一个 for 循环来获取固定数组 road 的值 其中长度为
  • logcat 中的 Android SELinux 错误

    我的 logcat 中不断出现这些奇怪的错误 我不仅不知道它们的含义 而且不知道是什么原因造成的 它们在我的应用程序首次启动时出现 gt E SELinux 8163 Function selinux android load priori
  • SHA-1 哈希值可以全零吗?

    是否有任何输入 SHA 1 将计算为四十个零的十六进制值 即 0000000000000000000000000000000000000000 是的 这几乎是不可能的 IE 2 160 分之一 即 0 0000000000000000000
  • 如何使用 XSLT v1.0 而不是使用 XSLT v2.0 正则表达式插入文本?

    我有一个 xml 文件 它描述 除其他外 具有描述完全限定 java 类名的属性值的元素 我正在尝试编写一个 XSLT 转换来修改此文件中描述的类名 以便 例如 出现com example MyClass会变成com example Moc
  • 为什么 RichTextBox 在文档开始之前总是包含额外的字符?

    我从一个空白的 RichTextBox 开始
  • 使用 Java 进行音频混合(没有 Mixer API)

    我正在尝试混合几种不同的音频流并尝试让它们同时播放代替一次一个 下面的代码一次播放一个 我无法找出不使用 Java Mixer API 的解决方案 不幸的是 我的声卡不支持使用 Mixer API 进行同步 我被迫找出一种通过代码来实现同步
  • ASP.NET 用户控件和 jQuery 对话框

    在我的页面上 我得到了以下用户控件 div class editFormDialog style display none font size 12px div
  • searchkick 索引相关模型字段

    我有一个 Rails 应用程序 我正在从 Sphinx 切换到 ElasticSearch 并使用 gem searchkick 我有一个模型教师和一个模型标签 通过 gem 其中教师可以关联多个标签 在教师模型中 我定义了这样的索引 de
  • Razor MVC 3 RC2 - 带有动态文本的 WebGrid Actionlink

    我正在 WebGrid 中输出带有动态链接文本的 Actionlink 我可以让它工作的唯一方法如下 Grid Column header Subject columnName Message Subject format item gt
  • 在 T O 重写函数中,如何取回它?

    我在 R 会话中做了一些愚蠢的事情 我写 打印 假 现在我无法打印东西 打印 1 错误 我该如何取回它 rm不会删除基础对象 因此您只需运行 rm print 有趣的是 你can打印东西 gt print lt FALSE gt print
  • 根据到期时间获取行

    http sqlfiddle com 9 406cb 2 http sqlfiddle com 9 406cb 2 我有一本分类为 1 2 3 4 的表格书 第 1 类 将停留 1 小时 第 2 类 将停留 2 小时 第 3 类 将停留 4
  • 为tableView注册nib名称

    static NSString cellIdentifier cell if tableView tableview1 ContactCustom cell1 ContactCustom tableView dequeueReusableC
  • 当我在 Unix 中调用 fork() 时会发生什么?

    我试图查找这一点 但在调用 fork 后 我很难理解父进程和子进程之间的关系 它们是完全独立的进程 仅通过 id parent id 关联吗 或者他们共享记忆吗 例如每个进程的 代码 部分 是重复的这样每个进程都有自己相同的副本 或者以某种
  • 使用python将mysql查询写入csv,需要显示字段名称

    我有以下内容 import MySQLdb as dbapi import sys import csv dbServer localhost dbPass supersecretpassword dbSchema dbTest dbUse