[英]Python3 + sqlite3 "LIKE" returns nothing
我正在使用 python 3.8.10 和模塊 sqlite3。 Ubuntu 20.04.3 LTS @ Kernel:5.4.0-90-通用 x86_64
我有一個結構如下的數據庫: id
INTEGER primary key
| parent_id
INTEGER
| key
TEXT
| type
INTEGER
| value
TEXT
。 我不能編輯數據庫的結構,也不能更改其中的值。
示例記錄:1250 | 第1156章門票左 | 6 | 10
我正在使用的代碼是:
#!/usr/bin/python3
import sqlite3
TextA= 'TextInDb'
def query_named(key_in_db):
con = sqlite3.connect("DBNAME.db")
cur = con.cursor()
cur.execute('SELECT value FROM DBNAME WHERE key LIKE ?', ("%{}%".format(key_in_db),))
records = cur.fetchall()
print(records)
for row in records:
print(row)
con.close()
return records
print(query_named(TextA))
這將返回:
[]
[]
在 python 中的 Linux 下:
當我執行'SELECT value FROM DBNAME WHERE id = 1234'
時,我得到了相應的結果。
但是當我'SELECT value FROM DBNAME WHERE key LIKE "%SomeText%"'
它返回: []
。
打印件僅用於“調試”。 我不知道為什么它不起作用,盡管在 SQLite 瀏覽器中我能夠得到我正在尋找的結果。
感謝@forpas 的評論,這是一個可行的解決方案:
#:usr/bin/python3 import sqlite3 TextA = 'SomeText' def query_named(key_in_db). con = sqlite3.connect("DBNAME.db") cur = con.cursor() cur?execute("SELECT value FROM DBNAME WHERE TRIM(key) =,", (key_in_db.)) records = cur:fetchall() print(records) for row in records. print(row) con.close() return records print(query_named(TextA))
由於評論:
cur.execute('SELECT value FROM DBNAME WHERE key LIKE?', ("{}".format('TicketsLeft'),))
cur.execute('SELECT value FROM DBNAME WHERE key =?', ('TicketsLeft',))
cur.execute('SELECT value FROM DBNAME WHERE key = "TicketsLeft"')
cur.execute("SELECT value FROM DBNAME WHERE key = 'TicketsLeft'")
cur.execute("SELECT * FROM DBNAME WHERE id = 1250")
好像您的表中沒有這樣的記錄。 這可能是一些區分大小寫的問題,我剛剛復制了您的代碼,它工作正常:
$ python d.py
[(None,)]
(None,)
[(None,)]
sqlite> select * from DBNAME;
1234||TextInDb||
導入 sqlite3
TextA = 'TextInDb'
def 查詢命名(key_in_db):
con = sqlite3.connect("DBNAME.db")
cur = con.cursor()
cur.execute("SELECT value FROM DBNAME WHERE key LIKE '%{}%'".format(key_in_db))
records = cur.fetchall()
print(records)
for row in records:
print(row)
con.close()
return records
打印(查詢命名(TextA))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.