Сократить функцию SQLite - PullRequest
0 голосов
/ 02 июня 2018

Я довольно новичок в python, и мне было интересно, смогу ли я сократить некоторый повторяющийся код, такой как функция ниже.Я делаю программу, которая использует sqlite3 для регистрации личных (работающих) записей пользователей и информации о них.Затем программа может отображать их, заказывать их и т. Д. Код ниже предназначен для моей функции удаления.Спасибо за помощь!

def delete_pr(conn, c, command):
if (len(command) == 1):
    print("Delete what???")
if (len(command) == 2): 
    c.execute("DELETE FROM personal_records WHERE (event = ?)", (command[1], ))
    conn.commit()
if (len(command) == 3):
    c.execute("DELETE FROM personal_records WHERE (event = ?) AND (time = ?)", (command[1], command[2]))
    conn.commit()
if(len(command) == 4):
    c.execute("DELETE FROM personal_records WHERE (event = ?) AND (time = ?) AND (date = ?)", (command[1], command[2], command[3], ))
    conn.commit()
if(len(command) == 5):
    c.execute("DELETE FROM personal_records WHERE (event = ?) AND (time = ?) AND (date = ?) AND (info = ?)", (command[1], command[2], command[3], command[4], ))
    conn.commit()

1 Ответ

0 голосов
/ 02 июня 2018

Конечно;Вы могли бы улучшить способ построения cmd (который я оставлю в качестве упражнения).

def delete_pr(conn, c, command):
    if (len(command) == 1):
        print("Delete what???")
    elif len(command)<=5:
        # Build the query out of enough parts to match the length of command
        cmd = "".join(["DELETE FROM personal_records WHERE (event = ?)"," AND (time = ?)"," AND (date = ?)"," AND (info = ?)"][:len(command)])
        # Execute it using all but the first element of command
        c.execute( cmd, tuple(command[1:]) )
        conn.commit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...