如何使用 Python 将空格分隔的文本文件插入 mysql? [关闭]
Posted
技术标签:
【中文标题】如何使用 Python 将空格分隔的文本文件插入 mysql? [关闭]【英文标题】:How to insert a space delimited text file into mysql using Python? [closed] 【发布时间】:2013-05-05 20:10:49 【问题描述】:我的文本文件如下所示:
10May2013 3.1 http://ncbi.org p.sojae_aafeatureimp p.sojae_aafeatureimp
10May2013 3.2 http://ncbi.org p.sojae_aasequenceimp p.sojae_aasequenceimp
10May2013 3.3 http://ncbi.org p.sojae_blatalignment p.sojae_blatalignment
如何解析这些单独的行并将其插入到我的数据库中?
数据库结构:(日期、版本、网址、名称、描述)
我必须使用 Python 将文本文件中的值插入 mysql。到目前为止,我的脚本是这样的:
import MySQLdb, csv, sys
with open('externaldatabase.txt') as textfile:
csvreader = csv.reader(textfile)
csvdata = []
for row in csvreader:
csvdata.append(row)
conn = MySQLdb.connect (host = "localhost",user = "username", passwd = "password",db = "database_name")
c = conn.cursor()
for row in csvdata:
# Insert a row of data
c.execute("INSERT INTO externaldatabase (release_date, version, download_url, name, description) VALUES ('%s', '%s', '%s', '%s', '%s')" % (row))
conn.commit()
c.close()
但它让我出错:
Traceback (most recent call last):
File "csv1.py", line 16, in <module>
c.execute("INSERT INTO externaldatabase (release_date, version, download_url, name, description) VALUES ('%s', '%s', '%s', '%s', '%s')" % (row))
TypeError: not enough arguments for format string
【问题讨论】:
这不是人们为您做事的论坛。付出一些努力。你尝试了什么? 请再次查看我的帖子。我发布了到目前为止我所做的编码。我是新手,但必须完成这个。任何帮助将不胜感激。 【参考方案1】:你需要给csv.reader函数设置分隔符:
csvreader = csv.reader(textfile, delimiter='\t')
您没有在代码中执行此操作,因此 Python 不会拆分 CSV 文件的行。这就是它给出错误的原因。
如果你有 MySQL 表所有列的文件,你可以使用LOAD DATA INFILE 命令。速度要快得多,然后逐行加载。
LOAD DATA INFILE 'externaldatabase.txt'
INTO TABLE database_name.externaldatabase
FIELDS TERMINATED BY '\t';
【讨论】:
以上是关于如何使用 Python 将空格分隔的文本文件插入 mysql? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
使用 C++ 将空格分隔值文本转换为 .csv 然后保存 [关闭]
如何基于多个空格字符将文本文件拆分为 2 列作为 scala spark 的分隔符
在 python 2.7 中打开一个空格(?)分隔的文本文件?