在Python中将元组转换为字符串时出错

2024-09-30 06:33:18 发布

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

我有一个这样的元组,基本上是一个DB记录

record = ('R70:Congestion Ratio', 'pm_201204151900_KPI1.csv', 'pmexport_04_15_2012_20_00.tar.gz')

我试图将其转换为元组,然后转换为字符串以获取查询

^{pr2}$

但是我得到了TypeError: not all arguments converted during string formatting我做错了什么?有没有更好的方法来实现我正在努力实现的目标?在


Tags: csv字符串db记录tarrecord元组gz
3条回答

您想要更多%s在那里:

"INSERT INTO PM_NEW_COUNTERS (COUNTER_NAME, CSV_FILE_NAME, TAR_FILE_NAME) VALUES ('%s', '%s', '%s')" %(tuple(record))

不要像这样构建SQL。使用数据库引擎的正确形式。在

SQLite中,它是这样工作的:

cur.execute("""INSERT INTO PM_NEW_COUNTERS
  (COUNTER_NAME, CSV_FILE_NAME, TAR_FILE_NAME)
  VALUES (?, ?, ?)""", (a, b, c))

有关详细信息,请参阅Python Database API Specification v2.0。在

首先,你不应该尝试这样的查询。如前所述。在

其次,回答你关于字符串格式的问题。在

record = ('R70:Congestion Ratio', 'pm_201204151900_KPI1.csv', 'pmexport_04_15_2012_20_00.tar.gz')

记录已经是元组。在

其次,您尝试将有3个值的元组放入字符串中的1个位置。在

所以你应该这样做:

^{pr2}$

或者如果你想要更多的控制权:

"INSERT INTO PM_NEW_COUNTERS (COUNTER_NAME, CSV_FILE_NAME, TAR_FILE_NAME) VALUES %s %s %s" % (record[0], record[1], record[2])

相关问题 更多 >

    热门问题