Python 上的 IndexError 超出范围

发布于 2025-01-12 00:23:51 字数 618 浏览 0 评论 0原文

我有一个 python 代码将数据插入到我的数据库中。这是该行: query = '插入 1_recipe 值({0})'。我使用 {0} 传递 CSV 文件中的所有数据。在我的代码中使用 sys.argv 之前它工作得很好。这是新代码:

import sys

nomor = sys.argv[1]

.....
    query = "insert into {idnumber}_recipe values ({0})".format(idnumber = nomor)
    query = query.format(','.join(['%s'] * len(data)))
.....

当我运行此代码时,总是返回此错误:

'query = "insert into {idnumber}_recipe values ({0})".format(idnumber = nomor)
IndexError: Replacement index 0 out of range for positional args tuple'

如何修复它?谢谢。

更新: 我已经找到答案了。谢谢

I have a python code to insert data into my database. Here is the line:
query = 'insert into 1_recipe values({0})'. I used {0} to pass all data from my CSV file. It works perfectly before I use sys.argv in my code. Here is the new code :

import sys

nomor = sys.argv[1]

.....
    query = "insert into {idnumber}_recipe values ({0})".format(idnumber = nomor)
    query = query.format(','.join(['%s'] * len(data)))
.....

When I run this code, always back with this error :

'query = "insert into {idnumber}_recipe values ({0})".format(idnumber = nomor)
IndexError: Replacement index 0 out of range for positional args tuple'

How to fix it? Thanks.

Update:
I already found the answer. Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

茶底世界 2025-01-19 00:23:51

您仅向 format() 函数传递一个参数:

.format(idnumber = nomor)

format 函数没有可赋予格式化字符串的 ({0}) 部分的值。
提供另一个值或更改它,以便它也将使用 idnumber

You are only passing one argument to the format() function:

.format(idnumber = nomor)

The format function doesn't have a value to give to the ({0}) part of the formatted string.
Either give another value or change it so it will use idnumber as well

ぃ弥猫深巷。 2025-01-19 00:23:51

您可以查看格式化查询开发 在这里

例如:

insert_stmt = (
  "INSERT INTO employees (emp_no, first_name, last_name, hire_date) "
  "VALUES (%s, %s, %s, %s)"
)
data = (2, 'Jane', 'Doe', datetime.date(2012, 3, 23))
cursor.execute(insert_stmt, data)

您的代码可以使用更好的格式重写,如下所示:

import sys

nomor = sys.argv[1]

data_str_value = ','.join(['%s'] * len(data))
.....
    query = "insert into {idnumber}_recipe values ({values})".format(idnumber = nomor, values = data_str_value)
.....

注意:此代码仅根据给出的示例显示更好的格式。由于语法不正确,此查询可能会也可能不会按预期运行。

You can look at query development for formatting here.

e.g.:

insert_stmt = (
  "INSERT INTO employees (emp_no, first_name, last_name, hire_date) "
  "VALUES (%s, %s, %s, %s)"
)
data = (2, 'Jane', 'Doe', datetime.date(2012, 3, 23))
cursor.execute(insert_stmt, data)

Your code can be rewritten something like this using better formatting:

import sys

nomor = sys.argv[1]

data_str_value = ','.join(['%s'] * len(data))
.....
    query = "insert into {idnumber}_recipe values ({values})".format(idnumber = nomor, values = data_str_value)
.....

Note: This code is showing only better formatting as per the example given. This query may or may not run as expected due to incorrect syntax.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文