我正在构建一个iphone应用程序,其中包含我从网站上抓取的200张图片,这些图片会随机显示给用户。我试图用Python将这些图像存储在sqlite数据库中。 (注意:到目前为止,在我的研究中,我已经了解到这可能不是实现我的目标的最佳方式,我在这个相关问题Use images in an iOS app from a database without internet connection中询问这一点。我仍然很好奇。我做错了什么。)
response = requests.get(picture_url) #url is definitely correct
picture = sqlite3.Binary(response.content)
con = sqlite3.connect(db_filename)
cursor = con.cursor()
sql = '''CREATE TABLE member_data(id integer primary key autoincrement, picture BLOB, name TEXT);'''
cursor.execute(sql)
sql = '''INSERT INTO member_data (picture, name) VALUES ("{}", "{}",)'''.format(photo, member_name)
cursor.execute(sql)
con.commit()
数据库的其余部分正常工作(文本字段)。我正在使用Sublime并获取输出[Decode error - output not utf-8]
,但我不确定该如何处理这些信息。
答案 0 :(得分:3)
代码中的第一个错误是当你写...:
INSERT INTO member_data (picture, name, email, link)
当您刚刚创建了表格member_data
以包含字段picture
和name
但不 email
或{{1}时 - 然后你尝试只将两个值格式化为该SQL字符串。我怀疑你不向我们展示了你的实际代码,但错误地尝试了简化它。
你正在犯的一个更深层次的错误是使用字符串格式来准备你的sql语句,而不是你应该使用的占位符。
所以,改变:
link
成:
sql = '''INSERT INTO member_data (picture, name, email, link) VALUES ("{}", "{}",)'''.format(photo, member_name)
con.cursor().execute(sql)
(你已经拥有了一个非常好的光标,为什么还要制造另一个? - )