Функция запроса неожиданно возвращает `None` вместо элемента, который должен быть перезапущен - PullRequest
0 голосов
/ 15 февраля 2020

Я сделал небольшой рефакторинг для некоторого рабочего кода. Все, что я сделал, это добавил 2 функции, чтобы очистить способ обработки ввода и его назначения. Я ничего не изменил в функции query_pswd_by_name, но теперь он не возвращает пароль, он возвращает None. Все остальное работает отлично. Есть идеи, что происходит? Вот код:

import secrets 
import string
import sqlite3
import pyperclip
import optparse

#CREATE PASSWORD OF GIVEN LENGTH
def get_pass(length):
    return "".join(secrets.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits + string.punctuation) for x in range(length))


def get_pass_length():
    length = int(input("Enter the length of password: "))
    password= get_pass(length)
    print(password)
    pyperclip.copy(password)
    print('Password copied to clipboard')

def create_and_store_pwsd():
    password = get_pass_length()
    name = str(input("Enter name for password: "))

    #CREATE DATABASE CONNECTION
    conn = sqlite3.connect("managerDB.db")

    #CREATE CURSOR OBJECT
    c = conn.cursor()

    #CREATE TABLE IN DISK FILE BASED DATABASE
    c.execute("""CREATE TABLE IF NOT EXISTS password_table (
                            name TEXT,
                            pswd TEXT
                            )""")
    #c.execute("DELETE FROM password_table")
    c.execute("INSERT INTO password_table (name, pswd) VALUES (?, ?)", (name, password))

    #COMMIT CHANGES
    conn.commit()
    conn.close()


def query_pswd_by_name(name):

    conn = sqlite3.connect('managerDB.db')
    c = conn.cursor()
    query_password = "SELECT pswd FROM password_table WHERE name = ?"
    c.execute(query_password,(name,))
    result = c.fetchall()
    for row in result:
        pyperclip.copy(str(row[0]))
        print("Password copied to clipboard")
        print(str(row[0]))
    conn.commit()
    conn.close()

def input_name_and_query():
    name = input('Name of password you wish to query: ')
    query_pswd_by_name(name)

create_and_store_pwsd()

input_name_and_query()```

1 Ответ

0 голосов
/ 15 февраля 2020

Я имею в виду, по номиналу, он возвращает None, потому что вы никогда ничего не возвращаете из функции. Вы копируете его в буфер обмена.

Немного подробностей было бы хорошо. Какие функции были реорганизованы? Как выводятся на консоль все ваши операторы печати?

Кроме того, я бы рекомендовал обернуть функциональность модуля (два последних вызова) в if __name__ == "__main__" блок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...