Как исправить sqlite «база данных заблокирована»? - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь работать с базой данных и получаю сообщение об ошибке, сообщающее, что моя база данных заблокирована.


async def tradeStock(company, price, user, tradeType, dbId, userTwo, numShares):
    if tradeType == "bids":
        tradeTypeOpp = "asks"
    else:
        tradeTypeOpp = "bids"

    conn = sqlite3.connect('db.db')
    c = conn.cursor()

    c.execute(f"""UPDATE "{userTwo}" SET share_amount = share_amount - ? WHERE share_company=?""", (numShares, company,))


    c.execute(f"""SELECT * FROM "{userTwo}" WHERE share_company=?""", (company,))
    row = c.fetchone()

    if row:
        c.execute(f"""UPDATE "{user}" SET share_amount = share_amount + ? WHERE share_company=?""", (numShares, company,))

    else:
        c.execute(f"""INSERT INTO "{user}" (share_company, share_amount) VALUES (?, ?)""", (company, numShares,))


    c.execute(f"""DELETE FROM "{tradeTypeOpp}" WHERE id=?""", (dbId,))


    price = int(price)
    numShares = int(numShares)


    if tradeType == "asks":
        c.execute("UPDATE users SET balance = balance - ? WHERE name=?", (str(price * numShares), userTwo,))
        c.execute("UPDATE users SET balance = balance + ? WHERE name=?", (str(price * numShares), user,))
    if tradeType == "bids":
        c.execute("UPDATE users SET balance = balance - ? WHERE name=?", (str(price * numShares), user,))
        c.execute("UPDATE users SET balance = balance + ? WHERE name=?", (str(price * numShares), userTwo,))
    conn.commit()
    conn.close()

После просмотра в Интернете я видел сообщения, в которых говорилось о коммите (), но это ничего не изменило.

1 Ответ

0 голосов
/ 10 апреля 2020

Просто понял, я вызывал эту функцию из другой функции, которая также использовала ту же базу данных, и я забыл добавить conn.close () к этой функции перед вызовом этой.

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