select sum(A.Counter), A.id FROM(
SELECT h.Id, count(h.Id) as Counter
FROM #test_history1 h
INNER JOIN #test_history2 t on h.TypeId = t.Id
WHERE h.Code != 288
GROUP BY h.TypeId, h.Id
union
SELECT h.Id, 1 as Counter
FROM #test_history1 h
INNER JOIN #test_history2 t on h.TypeId = t.Id
WHERE h.Code = 288
GROUP BY h.TypeId, h.Id
)A
GROUP BY A.id
Чтобы получить из файла json информацию, которую вы хотите сохранить (два списка), вы можете просто импортировать json, загрузить файл и запросить его как словарь.
Представьте, что у вас есть такой json:
{
"users": ["Bacon", "Eggs", "Toast"],
"passwords": ["Please don't do it this way though!", "runny", "buttered"]
}
Можно просто:
import json
path_to_json = "./stackoverflowexample.json"
with open(path_to_json, "r") as handler:
info = json.load(handler)
users = info["users"]
passwords = info["passwords"]
print("User 0 '{}', has password '{}'".format(users[0], passwords[0]))
Это очень небезопасный метод хранения паролей, он очень неэффективен, и вы ' Скорее всего, в какой-то момент возникнут проблемы с согласованностью.
Гораздо лучший способ хранения паролей будет в базе данных, который позволит вам более эффективно запрашивать информацию, которую вы хотели, а также получать и хэшировать пароли, когда вы их получаете, чтобы они не хранились как удобочитаемые для человека. строки.
Пример:
import sqlite3
import hashlib
import uuid
user_table_definition = """
CREATE TABLE users (
username TEXT,
salt TEXT,
hpassword TEXT
)"""
add_user_sql = "INSERT INTO users VALUES ('{}','{}','{}')"
connection = sqlite3.connect("./stackoverflowdb.db")
cursor = connection.cursor()
cursor.execute(user_table_definition)
# Add incoming user
username = "Bacon"
password = "This is a little better, but this is just an outline..."
salt = uuid.uuid4().hex
hashedpassword = hashlib.sha512((salt + password).encode("UTF-8")).hexdigest()
cursor.execute(add_user_sql.format(username, salt, hashedpassword))
# Check incoming user
username = "Bacon"
password = "This is a little better, but this is just an outline..."
row = cursor.execute("SELECT salt, hpassword FROM users WHERE username = '{}'".format(username)).fetchone()
salt, hpassword = row # Unpacking the row information - btw this would fail if the username didn't exist
hashedIncomingPwd = hashlib.sha512((salt + password).encode("UTF-8")).hexdigest()
if hashedIncomingPwd == hpassword:
print("Winner winner chicken dinner we have a live one!")
else:
print("No access for you")
Это только показывает вам строки, которые составляют ядро того, что вы хотите, вы должны переместить некоторые из этих строк в функции, вы не можете вызвать этот код дважды, потому что Стол уже должен быть создан и другие вопросы. Во-первых, вам не нужно использовать sqlite!
SQL - очень полезная вещь для изучения, и, учитывая, что ваш вопрос выглядит как хобби, я бы посоветовал разобраться с этим. Желаем удачи.