gpt4 book ai didi

python - 使用python写mysql查询到csv,需要显示字段名

转载 作者:IT老高 更新时间:2023-10-28 22:14:25 28 4
gpt4 key购买 nike

我有以下几点:

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。


更新

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

正如一些评论中所述,cursor.description来自 DBAPI 的正是我所寻找的。

这是 Python 3 中使用 pymysql 的更现代示例连接到 MariaDB 的驱动程序,它将选择所有行并将其提取到一个元组中,将行标题/描述提取到一个列表中。然后我将这两个数据结构合并到一个列表中,即 written to a csv file .

标题名称是结果列表中的第一个条目;以线性方式将结果写入文件可确保行标题是 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()

关于python - 使用python写mysql查询到csv,需要显示字段名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4613465/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com