这个问题在这里已经有答案了:
在比较字符串时,如何将sqlite3设置为不区分大小写(11个答案)
11个月前关门了。
我正在用tkinter开发一个字典应用程序。我将一些单词及其含义存储在sqlite数据库中,其中一个单词的编写方式类似于“xml”、“access”。现在,每当我在entry widget中输入一个单词(xml或xml或access或access)并单击search按钮时,它就会显示“wordnotfound”。我希望这个词忽略任何大小写敏感。我想显示一个单词的意思,无论我键入的是“xml”还是“xml”或“access”或“access”
import tkinter as tk
import sqlite3
from tkinter import messagebox
from ttkthemes import ThemedStyle
from tkinter import ttk
from PIL import ImageTk, Image
import os
import sys
########### DEF FOR SEARCH #######
def search(event=''):
if getattr(sys, 'frozen', False):
data_folder=sys._MEIPASS
else:
data_folder=os.getcwd()
conn = sqlite3.connect(os.path.join(data_folder,'GI_DICTION4.db'))
cur = conn.cursor()
tex.delete(1.0, "end")
data = v.get().swapcase()
cur.execute("SELECT Meaning FROM Tables2 WHERE Words= ?", (data.swapcase(),))
var = cur.fetchall()
if var:
tex.insert("end", var[0]) # accessing the meaning
else:
tex.insert("end","Word not found")
def refresh():
entry.delete(0, "end")
tex.delete(1.0, "end")
def fetch_data(word):
if getattr(sys, 'frozen', False):
data_folder=sys._MEIPASS
else:
data_folder=os.getcwd()
conn = sqlite3.connect(os.path.join(data_folder,'GI_DICTION4.db'))
cur = conn.cursor()
cur.execute("select Words from Tables2 where Words like ? || '%'", (word,))
allw = cur.fetchall()
return allw
def on_key_release(event):
qword = event.widget.get()
allw = fetch_data(qword)
listbox.delete(0, tk.END)
for w in allw:
listbox.insert(tk.END, w[0])
def on_select(event):
entry.delete(0, tk.END)
entry.insert(0, event.widget.selection_get())
########## GUI DESIGN ##############
1条答案
按热度按时间093gszye1#
表中的数据是否全部存储在一个大小写中,例如小写或大写。
如果是,那么可以使用
string.lower()
或者string.upper()
功能。您还可以在sql查询中使用collatenocase来忽略单词的大小写。
SELECT Meaning FROM Tables2 WHERE words = 'XML' COLLATE NOCASE
检查这个答案-当比较字符串时,如何将sqlite3设置为不区分大小写?