python-3.x - 在 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]
解决方案
如果在数据库中找不到关键字,则结果cur.fetchall()
将是一个空列表。为该条件添加一个测试并输出所需的消息。
推荐阅读
- git - Git:如何从本地仓库创建远程仓库并将本地分支推送到 GitHub 上的远程?
- android - 如何使用 CameraX 拍摄多张图像?
- python - 如何在使用 agg 并应用 np.average 时循环遍历数组
- flutter - 拉伸并启动 FlatButton.icon
- regex - 正则表达式:匹配两个或多个前面的标记?
- azure - 具有 ID 的 Terraform 资源已存在
- reporting-services - SSRS 2016 Oracle ODP.NET 间歇性 ORA-12571
- r - 抓取网页(使用 R),其中所有元素都放置在
标签 - javascript - 使用 javascript 确定最后访问的页面是否是我的网站
- git - git SHA 可以作为电子设备软件版本的一部分显示吗