使用Python的MySQLdb读取MySQL数据时如何去除类型标识?
解决MySQLdb查询结果带类型标识的问题
问题出在MySQLdb返回的结果集中,数据库的数值类型会被映射为Python的对象类型(比如整数转为long,DECIMAL字段转为Decimal对象),这些对象直接打印或拼接时会带上类型标识。要获取纯数据内容,需要将每个字段显式转换为字符串。
修改后的代码如下:
#!/usr/bin/python import MySQLdb db = MySQLdb.connect(host="--------", user="-----", passwd="xyz", db="abc123") cur = db.cursor() outfil='..........' # 使用with语句自动管理文件,避免手动关闭的疏漏 with open(outfil, "w") as f: cur.execute("SELECT * FROM aerodrome ORDER BY sequence") for row in cur.fetchall(): # 将每行的每个元素转换为字符串,提取实际数据 str_row = [str(item) for item in row] # 拼接为CSV格式并写入,添加换行符分隔行 f.write(",".join(str_row) + "\n") db.close()
关键修改点:
- 用
str(item)遍历每行的每个元素,将对象类型转为纯字符串值,去掉L、Decimal()这类标识 - 使用
with open(...)语句处理文件,自动完成文件关闭,更安全可靠 - 给每行末尾添加
\n,避免所有数据挤在同一行
内容的提问来源于stack exchange,提问作者Karel Adams
相关产品推荐
相关产品推荐

