代码之家  ›  专栏  ›  技术社区  ›  Ehteshaam

sqlite3.programmingeror:提供的绑定数不正确。

  •  -2
  • Ehteshaam  · 技术社区  · 7 年前
    def populate_db(cur, csv_fp):
        rdr = csv.reader(csv_fp)
        cur.executemany('''INSERT INTO tickets (Key , \
            Id  , \
            Project , \
            Type , \
            Status , \
            Priority , \
            Assignee , \
            Reporter , \
            Created , \
            Updated , \
            Date_due , \
            Summary , \
            Description , \
            Components , \
            Affects_Versions , \
            Fix_Versions  , \
            Environment , \
            Resolution , \
            Votes) \
            VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)''', rdr)
    

    这段代码在我的Pycharm编辑器上运行良好,带有2.7解释器。 但是,在Linux 2.6版中,它给出了上述错误。 请指示。

    2 回复  |  直到 7 年前
        1
  •  0
  •   user6476414    7 年前

    尝试使用list literal或使rdr成为元组。由于RDR被视为输入序列,因此需要将其转换为元组或列表:

    [rdr]
    #or try this
    (rdr,)
    
        2
  •  0
  •   Ehteshaam    7 年前

    由于这在IDE(Pycharm)中有效,但在生产中不起作用,所以我改用带字典的csv阅读器。丢弃了sqlite。

    def populate_dict(mydict, csv_fh):
        rdr = csv.DictReader(csv_fh, ['Key', 'Description'])
        mydict.extend(rdr)