【发布时间】:2020-11-20 09:21:47
【问题描述】:
我对 SQLite、python 和编程非常陌生,我正在尝试创建一个家庭媒体服务器数据库。我正在尝试编写一个程序,它将新条目添加到我创建的数据库中,并允许我编辑现有条目。虽然我可以很好地添加条目,但更新特定条目是另一回事。例如,我希望能够将特定电影标题更新为新标题,而无需事先知道它有什么 id。我的程序中导致问题的代码部分是这样的:
def editMedia():
while True:
print('Catagories: title, genre, type, director, length, rating')
editValue = input('What would like to edit?: ')
if editValue not in ('title', 'Title', 'genre', 'Genre', 'type',
'Type', 'director', 'Director', 'length', 'Length',
'rating', 'Rating'):
print('Invalid entry: Please choose one of the catagories')
continue
elif editValue in ('title', 'Title'):
while True:
oldTitle = input('Enter old title: ')
if len(oldTitle) < 1:
print('Invalid entry: Old title must have a value.')
continue
else:
while True:
updateTitle = input('Enter new title: ')
if len(updateTitle) < 1:
print('Invalid entry: New title must have a value.')
continue
else:
break
break
cur.execute('''UPDATE Movie SET title = ? WHERE title = ?''', (updateTitle, oldTitle))
print("Record Updated successfully ")
break
conn.commit()
我用来创建我正在编辑的表格的代码是:
import sqlite3
conn = sqlite3.connect('mediadb.sqlite')
cur = conn.cursor()
cur.executescript('''
DROP TABLE IF EXISTS Director;
DROP TABLE IF EXISTS Genre;
DROP TABLE IF EXISTS Type;
DROP TABLE IF EXISTS Movie;
CREATE TABLE Director (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
name TEXT UNIQUE);
CREATE TABLE Genre (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
name TEXT UNIQUE);
CREATE TABLE Type (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
name TEXT UNIQUE);
CREATE TABLE Movie (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
title TEXT UNIQUE,
genre_id INTEGER,
type_id INTEGER,
director_id INTEGER,
minutes INTEGER, rating INTEGER);
''')
conn.commit()
cur.close()
当我尝试更新特定电影标题时,程序运行没有错误,但是当我使用 DB Browser for SQLite 检查我的数据库以确认标题已更新时,我发现没有任何更改。
我在这里做错了什么?我所追求的可能吗?
【问题讨论】:
标签: python sqlite sql-update