如何使单词输入忽略数据库中单词的大小写敏感度

xj3cbfub  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(321)

这个问题在这里已经有答案了

在比较字符串时,如何将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 ##############
093gszye

093gszye1#

表中的数据是否全部存储在一个大小写中,例如小写或大写。
如果是,那么可以使用 string.lower() 或者 string.upper() 功能。
您还可以在sql查询中使用collatenocase来忽略单词的大小写。 SELECT Meaning FROM Tables2 WHERE words = 'XML' COLLATE NOCASE 检查这个答案-当比较字符串时,如何将sqlite3设置为不区分大小写?

相关问题