TypeError:插入mysql数据库时,格式字符串的参数不足

2024-04-29 12:04:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的csv文件:

nohaelprince@uwaterloo.ca, 01-05-2014
nohaelprince@uwaterloo.ca, 01-05-2014
nohaelprince@uwaterloo.ca, 01-05-2014
nohaelprince@gmail.com, 01-05-2014

我正在阅读以上的csv文件和提取域名,以及按域名和日期的电子邮件地址计数。所有这些我需要插入MySQL表中的东西叫做domains。在

下面是一段代码,它给我的错误是TypeError: not enough arguments for format string,当我试图插入domains表时就会发生这种情况。在

^{pr2}$

我做错什么了?在

到目前为止,在MySQL中,date_of_entry列的数据类型是date。在


Tags: 文件csv代码comdate电子邮件地址mysql
3条回答

它将%s作为格式字符串检测,但检测失败。我想你得用引号把它围起来

INSERT INTO domains(domain_name, cnt, date_of_entry) VALUES(%s, %s, STR_TO_DATE('%s', '%d-%m-%Y'))

您需要在sql语句中使用“%d-%m-%Y”,具体如下。但是python(或execute命令)首先尝试将其用于字符串格式化,并抛出此错误。在

我认为你必须逃避,你应该试着:

q = """INSERT INTO domains(domain_name, cnt, date_of_entry) VALUES(%s, %s, STR_TO_DATE(%s, '%%d-%%m-%%Y'))"""

试试这个:

q = """INSERT INTO domains(domain_name, cnt, date_of_entry) VALUES(%s, %s, STR_TO_DATE(%s, 'd-m-Y'))"""

所以我们从STR_TO_DATE(%s, '%d-%m-%Y'))改为STR_TO_DATE(%s, 'd-m-Y'))

相关问题 更多 >