Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fsoky/sqlite3_lesson
Исходный код с ролика: Как работать с базой данных в Python
https://github.com/fsoky/sqlite3_lesson
python python-sqlite python-sqlite3 sqlite sqlite3
Last synced: 18 days ago
JSON representation
Исходный код с ролика: Как работать с базой данных в Python
- Host: GitHub
- URL: https://github.com/fsoky/sqlite3_lesson
- Owner: Fsoky
- Created: 2022-02-14T21:47:15.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2022-02-17T18:49:09.000Z (almost 3 years ago)
- Last Synced: 2024-11-19T05:02:33.992Z (3 months ago)
- Topics: python, python-sqlite, python-sqlite3, sqlite, sqlite3
- Language: Python
- Homepage: https://www.youtube.com/watch?v=y0YWRqrhTBY
- Size: 4.88 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# [SQLite 3 | Как работать с базой данных в Python?](https://youtu.be/y0YWRqrhTBY)
Исходный код с ролика.### Основные методы для работы с БД
```py
import sqlite3with sqlite3.connect("thebest.db") as db:
cursor = db.cursor()cursor.execute("""CREATE TABLE IF NOT EXISTS articles(
id INTEGER PRIMARY KEY AUTOINCREMENT,
author VARCHAR,
topic VARCHAR,
content TEXT
)""")values = [
("Фипик", "Что будет завтра?", "Всё будет хорошо, не грусти."),
("Летта", "Хорошие новости", "У тебя всё получится!"),
("Эрвик", "Совет дня", "Не обращай внимания на негатив!")
]cursor.executemany("INSERT INTO articles(author, topic, content) VALUES(?, ?, ?)", values)
"""
.fetchone() - Возвращает первую, единственную запись.
.fetchall() - Возвращает список с записями.
.fetchmany(size) - Возвращает список записей с указаным количеством (size).
"""cursor.execute("SELECT * FROM articles")
print(cursor.fetchone())cursor.execute("""CREATE TABLE IF NOT EXISTS email(
`from` VARCHAR,
`to` VARCHAR,
subject VARCHAR,
content TEXT
)""")cursor.execute("INSERT INTO email VALUES('Фсоки', 'Зритель', 'Фантастический денёк', 'Знай, ты самый лучший!')")
for data in cursor.execute("SELECT * FROM email"):
print(f"\nОт: {data[0]}\nКому: {data[1]}\nТема: {data[2]}\nСообщение: {data[3]}")
```### Регистрация/авторизация и казино
```py
import sqlite3
import hashlib
import randomdef md5sum(value):
return hashlib.md5(value.encode()).hexdigest()with sqlite3.connect("database.db") as db:
cursor = db.cursor()query = """
CREATE TABLE IF NOT EXISTS users(
id INTEGER PRIMARY KEY,
name VARCHAR(30),
age INTEGER(3),
sex INTEGER NOT NULL DEFAULT 1,
balance INTEGER NOT NULL DEFAULT 2000,
login VARCHAR(15),
password VARCHAR(20)
);
CREATE TABLE IF NOT EXISTS casino(
name VARCHAR(50),
description TEXT(300),
balance BIGINT NOT NULL DEFAULT 10000
)
"""cursor.executescript(query)
def registration():
name = input("Name: ")
age = int(input("Age: "))
sex = int(input("Sex: "))
login = input("Login: ")
password = input("Password: ")try:
db = sqlite3.connect("database.db")
cursor = db.cursor()db.create_function("md5", 1, md5sum)
cursor.execute("SELECT login FROM users WHERE login = ?", [login])
if cursor.fetchone() is None:
values = [name, age, sex, login, password]cursor.execute("INSERT INTO users(name, age, sex, login, password) VALUES(?, ?, ?, ?, md5(?))", values)
db.commit()
else:
print("Такой логин уже существует!")
registration()
except sqlite3.Error as e:
print("Error", e)
finally:
cursor.close()
db.close()def log_in():
login = input("Login: ")
password = input("Password: ")try:
db = sqlite3.connect("database.db")
cursor = db.cursor()db.create_function("md5", 1, md5sum)
cursor.execute("SELECT login FROM users WHERE login = ?", [login])
if cursor.fetchone() is None:
print("Такого логина не существует!")
else:
cursor.execute("SELECT password FROM users WHERE login = ? AND password = md5(?)", [login, password])
if cursor.fetchone() is None:
print("Пароль неверный!")
else:
play_casino(login)
except sqlite3.Error as e:
print("Error", e)
finally:
cursor.close()
db.close()def play_casino(login):
print("\nCASINO 🥰😳")try:
db = sqlite3.connect("database.db")
cursor = db.cursor()cursor.execute("SELECT age FROM users WHERE login = ? AND age >= ?", [login, 18])
if cursor.fetchone() is None:
print("Вам недостаточно лет!")
else:
bet = int(input("Bet: "))
number = random.randint(1, 100)balance = cursor.execute("SELECT balance FROM users WHERE login = ?", [login]).fetchone()[0]
if balance < bet:
print("Недостаточно средств, гуляй работать! 😉💖")
elif balance <= 0:
print("Недостаточно средств, гуляй работать! 😉💖")
else:
if number < 50:
cursor.execute("UPDATE users SET balance = balance - ? WHERE login = ?", [bet, login])
cursor.execute("UPDATE casino SET balance = balance + ?", [bet])print("You lose! ❤")
else:
cursor.execute("UPDATE users SET balance = balance + ? WHERE login = ?", [bet, login])
cursor.execute("UPDATE casino SET balance = balance - ?", [bet])print("You win! 😉😳")
db.commit()
play_casino(login)
except sqlite3.Error as e:
print("Error", e)
finally:
cursor.close()
db.close()registration()
log_in()
```### Работа с изображениями в SQLite 3
```py
import sqlite3
import iofrom PIL import Image
with sqlite3.connect("users-avatar.db") as db:
cursor = db.cursor()
cursor.row_factory = sqlite3.Rowcursor.execute("CREATE TABLE avatars(photo BLOB)")
with open("clover.png", "rb") as file:
cursor.execute("INSERT INTO avatars VALUES(?)", [file.read()])data = cursor.execute("SELECT photo FROM avatars").fetchone()["photo"]
img = Image.open(io.BytesIO(data))
img.show()
```