首页 > 解决方案 > 在 Python 中从 SQL 数据库打印正确的列表项

问题描述

Python 用每行的关键字读取我的文本文件,然后让 SQL 选择它并在 Python 中获取它,但我不知道正确的列表理解或代码来排除 SQL 无法读取的关键字。它只打印循环中的最后一个单词,我希望包含两个关键字。

所以我在随机文本文件中有这些关键字:

Bohemian Rhapsody

You're

Thriller

Just some random words

数据库找到了前两个的轨道,但没有找到文件中的第 3 行和第 4 行。我想要一份打印声明,上面写着:--- 没有找到 Thriller 的曲目,只是一些随机词 ---

我的代码:

导入 sqlite3, 系统

conn = sqlite3.connect(r'C:\Users\Just\Downloads\chinook.db')
cur = conn.cursor()
import_file = input ('Enter file name: ')
with open(import_file, 'r') as f:                        
    unfiltered = f.read().splitlines()
    keywords = [filter_empty for filter_empty in unfiltered if filter_empty]

for keyword in keywords:
        
    cur.execute('''SELECT tracks.TrackId, tracks.Name, artists.Name
                FROM tracks
                INNER JOIN albums ON tracks.AlbumId = albums.AlbumId
                INNER JOIN artists ON albums.ArtistId = artists.ArtistId
                WHERE tracks.name LIKE (?||'%') ''',(keyword,))
    found_tracks = cur.fetchall()
    unknown_tracks = []

    if len(found_tracks) == 0:
        print (keyword)
        unknown_tracks += [keyword]
    
   

标签: python-3.xsqlite

解决方案


如果在数据库中找不到关键字,则结果cur.fetchall()将是一个空列表。为该条件添加一个测试并输出所需的消息。


推荐阅读