python - 如何在 python 中打印 SQLite 查询的结果?
问题描述
我正在尝试打印此 SQLite 查询的结果,以检查它是否已将数据存储在数据库中。目前它只打印无。有没有办法在 Microsoft Word 或 LibreOffice 等程序中打开数据库。只是看它是否已将内容保存到数据库中。
import tkinter as tk
import sqlite3 as lite
import sys
class GUI(tk.Frame):
def __init__(self, master=None, **kwargs):
tk.Frame.__init__(self, master, **kwargs)
self.var = tk.StringVar()
entry = tk.Entry(self, textvariable=self.var)
entry.pack()
btn = tk.Button(self, text='read', command=self.read_entry)
btn.pack()
btn = tk.Button(self, text='write', command=self.write_entry)
btn.pack()
def read_entry(self):
#print(self.var.get())
def write_entry(self):
self.var.set(self.var.get())
con = lite.connect('RandomThings.db')
cur = con.cursor()
cur.execute("CREATE TABLE jetfighter(Name TEXT)")
cur.execute("INSERT INTO jetfighter VALUES (?)", (self.var.get(),))
#con.commit()
print (cur.fetchone())
cur.close()
def main():
root = tk.Tk()
root.geometry('200x200')
win = GUI(root)
win.pack()
root.mainloop()
if __name__ == '__main__':
main()
谢谢你帮我解决我的问题。
解决方案
只有SELECT
查询有行集。1因此,如果您想查看刚刚插入的行,则需要查看SELECT
该行。
准确选择刚刚插入的行的一种方法是使用rowid
伪列。该列具有由数据库自动生成的唯一值,并且每条INSERT
语句都会更新lastrowid
游标上的一个属性。所以:
cur.execute("INSERT INTO jetfighter VALUES (?)", (self.var.get(),))
cur.execute("SELECT * FROM jetfighter WHERE rowid=?", (cur.lastrowid,))
print(cur.fetchone())
这将打印出如下内容:
('Starfighter F-104G',)
推荐阅读
- javascript - 相同的代码是从网页复制的,但它不起作用?
- javascript - some() 如何用于检查 JS 中的重复项?
- amazon-web-services - CloudFormation 是否可以跨嵌套堆栈共享条件定义?
- sql-server - 递归查询计算文件夹大小
- c++ - 模板函子与类模板参数推导
- javascript - 将过滤器应用于 React 数组并显示过滤后的结果
- flutter - 在颤振应用程序中如何将数据从标题放到appBar
- c# - 如何实时收听和使用来自 Azure IoT 中心的消息
- assembly - 内存堆栈:来自 esp 的 sub 20
- python - 在 SpaCy 3.0 中将实体 ID 映射到字符串