2016-05-13 54 views
1

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

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() 
+0

我决定添加[:-1]到每个“newBlah”变量中的信息之前,以切割换行符关闭的端部被插入到数据库中。这解决了它,但我仍然不知道它为什么发生在第一位。 –

回答

2

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

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

例如:

newTitle = self.text_title.get("1.0", 'end-1c') 
+0

非常好,解决了它。感谢您的解释! –

相关问题