python与sqlite3数据库配合使用,从数据库保存,更新和检索文本

时间:2018-08-15 07:47:05

标签: python tkinter sqlite

前一天,我一直在尝试解决此问题。并且几乎成功了。但是,我仍然没有得到明确的答案-为什么下一个代码不起作用?

import sqlite3
from tkinter import *
from tkinter import ttk
root = Tk()
text = Text(root)
text.pack()
con = sqlite3.connect(':memory:')
c = con.cursor()
c.execute("CREATE TABLE t1 (name)")
c.execute("INSERT INTO t1 VALUES (?)", ('TEST',))
con.commit()

c.execute("SELECT * FROM t1")
text_ = c.fetchall()
text.insert(INSERT, text_)
text.tag_add('one', '1.0', '1.3')
text.tag_config('one', background='blue')

text_get = text.get('1.0', 'end')


c.execute("UPDATE t1 SET name=?", (text_get,))
con.commit()


text.insert(INSERT, '\n')

c.execute("SELECT * FROM t1")
text_ = c.fetchall()
text.insert(INSERT, text_)


root.mainloop()

结果为下一个: 保存到数据库之前的TEXT-具有背景色 更新到db并取回后的TEXT-没有。 有什么办法可以使它工作?

1 个答案:

答案 0 :(得分:1)

Text.get()方法仅返回纯文本,而不返回有关任何标签的信息。

您必须使用其他方法来获取有关标签的信息:

>>> text.tag_names()
('sel', 'one')
>>> text.tag_cget('one', 'background')
'blue'
>>> text.tag_ranges('one')
(<textindex object: '1.0'>, <textindex object: '1.3'>)

该信息需要存储在其他一些列中。或者,将格式代码插入数据库中保存的文本中。