sqlite3.InterfaceError:绑定参数1时出错 - 可能是不支持的类型

时间:2012-10-18 10:27:51

标签: python sqlite

我有这个令人烦恼的错误,我无法解决..这是我的功能

def savePicture(pic):
try:
    connection=sqlite3.connect('/home/faris/Desktop/site/site.db')
    db=connection.cursor()
    print type(pic.user.profile_picture)
    db.execute('INSERT INTO pictures (picture_id, caption, created_time, picture_url, link, username,full_name,profile_picture) VALUES (?,?,?,?,?,?,?,?)',
        [
        pic.id,
        pic.caption,
        pic.created_time,
        pic.get_standard_resolution_url(),
        pic.link,
        pic.user.username,
        pic.user.full_name,
        pic.user.profile_picture
        ])
    connection.commit()
    connection.close()
except sqlite3.IntegrityError:
    print 'pic already exist'

这是我的表(Sqlite:D)

-- Describe PICTURES
CREATE TABLE "pictures" (
"picture_id" INTEGER PRIMARY KEY,
"caption" TEXT,
"created_time" TEXT,
"picture_url" TEXT,
"link" TEXT,
"username" TEXT,
"full_name" TEXT,
"profile_picture" TEXT
)

这就是我遇到的错误,

<type 'str'>
Traceback (most recent call last):
File "/home/faris/Desktop/site/cron/pictures.py", line 15, in <module>
savePicture(picture)
File "/home/faris/Desktop/site/db.py", line 36, in savePicture
pic.user.profile_picture
sqlite3.InterfaceError: Error binding parameter 1 - probably unsupported type.

如你所见,我已经打印了“pic.user.profile_picture”的类型并返回了str 我也试过使用这两个函数(unicode和str)来确保它返回一个没有运气的字符串..

有什么想法吗?干杯:D

2 个答案:

答案 0 :(得分:13)

好的,那是愚蠢的哈哈

    pic.caption,
    pic.created_time,

不是TEXT类型..但错误消息msg说的是问题 来自pic.user.profile_picture。 因此,如果您有此错误只需检查所有参数:)

  
    

阅读以下评论:)

  

答案 1 :(得分:0)

解决此问题的最简单方法是-将所有数据框列转换为str,然后应用to_sql方法。 df = df.applymap(str) 否则,您可以在将数据框保存到SQLite表之前更改与SQLite数据类型兼容的每一列的数据类型。将数据插入SQL表时, dtype方法的to_sql参数将有助于转换列的数据类型。