SQLite和Python正在将不需要的换行符插入数据库

时间:2016-05-13 23:35:19

标签: sql database python-3.x tkinter sqlite

我正在编写一个在数据库中插入和检索电影信息的小程序。如果我手动将信息输入到.db文件中,程序将检索它并在GUI的文本框中完美显示。但是,如果我尝试将这些文本框中的数据插入到我的数据库中,它会在每个字段的末尾添加一个换行符。当我再次检索它时,它最后有“\ n”。检索效果很好,但不知何故,我的插入内容包含了换行符。这是我的插入功能:

def addRecord(self):
    newTitle = self.text_title.get(1.0, 'end')
    newSynopsis = self.text_summary.get(1.0, 'end')
    newCast = self.text_cast.get(1.0, 'end')
    newRuntime = self.text_runtime.get(1.0, 'end')
    newRating = self.text_rating.get(1.0, 'end')
    newTrailer = self.text_trailer.get(1.0, 'end')
    newDates = self.text_date2d.get(1.0, 'end')
    newImage = self.text_image.get(1.0, 'end')

    c.execute("INSERT INTO Movies (Title, Synopsis, Actors, Runtime, Rating, Trailer, Dates, Image) VALUES ('{}','{}','{}','{}','{}','{}','{}','{}');"
              .format(newTitle, newSynopsis, newCast, newRuntime, newRating, newTrailer, newDates, newImage))
    conn.commit()

1 个答案:

答案 0 :(得分:2)

Tkinter会自动添加换行符作为文本小部件中的最后一个字符。只获取您或用户插入的文本小部件内容的正确方法应使用"end-1c"(“结束”减去一个字符),而不是"end"END

另外,要迂腐,第一个索引应该是字符串,而不是浮点数。在1.0的情况下它并不重要,但你应该养成在文本小部件中始终使用字符串作为索引的习惯。

例如:

newTitle = self.text_title.get("1.0", 'end-1c')
相关问题