Python 和 SQLite : Not all arguments converted during string formatting error

标签 python sqlite csv file-io

我在 Stackoverflow 上看到了一些错误,但当我实现它们时,似乎没有一个答案起作用。

import csv, sqlite, sys

conn = sqlite.connect('Database_Practice.db')
mouse = conn.cursor()

input = open('DATA.csv','rb')
my_reader = csv.reader(input, delimiter = ',',quotechar='|')

mouse.execute("DROP TABLE IF EXISTS Example_Input;")
mouse.execute("CREATE TABLE Example_Input (ID INTEGER, Name VARCHAR, Job VARCHAR, Salary INTEGER);")

try:
    to_database = [entry for entry in my_reader]
    for block in to_database:
        mouse.execute("INSERT INTO Example_Input (ID,Name,Job,Salary) VALUES (?,?,?,?)", block)
finally:
    conn.commit()
    input.close()

我知道变量正在获取变量,就像我注释掉 INSERT 行一样,我得到了输出:

['1', 'Billy', 'Tech', '888']
['2', 'Jane', 'Sales', '777']
['3', 'Scott', 'Tech', '667']
['4', 'Harris', 'Tech', '444']
['5', 'Gray Skull', 'Sales', '333']
['6', 'Barbarosa', 'Assistant', '200']
['7', 'Nick', 'Janitor', '100']

但是经过很长时间的尝试调整它,我似乎无法让它停止给我错误:

 File "Another_Try.py", line 18, in ?
    mouse.execute("INSERT INTO Example_Input (ID,Name,Job,Salary) VALUES (?,?,?,?)", block[0:4])
  File "/usr/lib64/python2.4/site-packages/sqlite/main.py", line 255, in execute
    self.rs = self.con.db.execute(SQL % parms)
TypeError: not all arguments converted during string formatting

有什么建议吗?

编辑:

try:
    to_database = [entry for entry in my_reader]
    for block in to_database:
#       mouse.execute("INSERT INTO Example_Input (ID,Name,Job,Salary) VALUES (?,?,?,?)", block)
        print block

最佳答案

我运行了你的代码,用 sqlite3 替换了 sqlite,并附加了以下内容:

print mouse.execute("select * from Example_Input").fetchall()

它似乎适用于合理的 CSV。也许您应该检查 CSV 是否确实是您所期望的。如果引号不正确,您最终可能会得到超过四列,这可以解释错误。

顺便说一下,用这个替换循环会更方便:

try:
    mouse.executemany("INSERT INTO Example_Input (ID,Name,Job,Salary) VALUES (?,?,?,?)", my_reader)
finally:
    conn.commit()
    i.close()

关于Python 和 SQLite : Not all arguments converted during string formatting error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20888436/

相关文章:

python - 使用 scipy 在 python 中读取 MatLab 文件

python - 使用不同的交换类型动态创建队列

java - SQLite内存不足异常

android - SQLite数据库错误: SQLiteLog: (1) near "s": syntax error

ruby - 将 CSV 导入 Postgresql,其中包含不重复行的重复值

python - 使用 for in 循环时将项目移至列表前面

sqlite - 在默认目录以外的目录中创建Sqlite3数据库

MySQL : error with --secure- file-priv while using USE LOAD DATA INFILE from R

python - 删除python中所有.csv文件内容

python - 如何从 xgboost CV 中获取经过训练的模型?