Pull to refresh

Comments 14

Я дико прошу меня извинить, но почему Вы не хотите создавать базу как всё что в ней в самой программе?
Это же удобней и даёт знания для создания базы новичку. А то подумают что базу можно создавать только вручную через специальное ПО, хотя это совсем и вообще не так.
Возможно я не правильно понял что вы написали, но как вы собираетесь создавать базу данных в самой программе, не подключая сторонних библиотек или через «специальное ПО»?
создавать базу данных в самой программе, не подключая сторонних библиотек или через «специальное ПО»

import sqlite3
sqlite3.connect('db/database.db')

Но человек наверное имел ввиду добавить запрос на создание таблиц. Хотя вопрос открытый считать ли sqlte3 специальным ПО?)
Но эта фраза
и у вас нет средства для работы с БД, то необходимо установить утилиту

и правда звучит странно в контексте python и sqlite. Тем более что утилитка для работы с этой базой через cli и в дистрибутиве может уже существовать.
Я изначально подумал, что он имел ввиду «написать свою базу данных на питоне»(которая вероятно все будет в оперативной памяти хранить) XD
Прошу прощения, конечно же создать таблицы и колонки в ручную но с использованием библиотеки sqlite. Там не так много кода.
Тоже подумал об этом. Подвешу код попроще (можно и класс нарисовать) под ваш комментарий.

import sqlite3
from pathlib import Path

def sqlite_connect():
    conn = sqlite3.connect("database.db", check_same_thread=False)
    conn.execute("pragma journal_mode=wal;")
    return conn

def init_sqlite():
    conn = sqlite_connect()
    c = conn.cursor()
    c.execute('''CREATE TABLE test (id integer primary key, user_id integer, user_name text, user_surname text, username text)''')
    conn.commit()
    conn.close()
    return

db = Path("./database.db")
try:
    db.resolve(strict=True)
except FileNotFoundError:
print("Database not found, trying to create a new one.")
     try:
        init_sqlite()
    except Exception as e:
        print("Error when creating database : ", e.__repr__(), e.args)
        pass
    else:
        print("Success.")
У самого была статья с похожим подключением, только там я использовал MySQL. Сейчас есть множество библиотек(первое что пришло в голову — Pillow, SQLAlchemy), которые позволяют работать с базами данных намного удобнее и продуктивнее. Собирать миграции оттуда намного удобнее(если вам очень надо запилить свой гениальный или быстрый запрос, то эти же миграции можно спокойно редактировать). В итоге при помощи этих библиотек вы можете писать базы данных на более понимаемом для себя языке, нежели каждый раз гуглить, как сделать тот или иной запрос(хотя конечно и библиотеку читать придется, тем не менее это удобнее). Возможно какие-то проекты и имеют смысл использовать библиотеки для прямой работы с бд, но в данном случае для какого-нибудь бота вполне подойдет хорошая ORM.
Как Pillow помогает работать с базами данных? Это же библиотека для работы с изображениями.
Извиняюсь. Перепутал с peewee. Спасибо за замечание.
а это статья о подключении бд к боту или таки работа с ней в питоне? зачем это все?
Вопрос, как правильно организовать разработку (учитывая что весь код лежит на github) так чтобы каждый раз не спирать token перед тем как класть код в репозиторий? В один прекрасный момент можно забыть это сделать.
Сам сталкиваюсь с такой проблемой). Даже не знаю как решить. Всегда стираю.
Чем вас переменные окружения не устраивают?
А в prod контуре вы каждый раз новый токен дописываете после чекаута?
* токен держать в файле конфигураций, аля config.cnf (ini\yaml\etc)
* рядом положить такой же файл config.cnf.example с тестовыми настройками
* в .gitignore добавить config.cnf
* спокойно коммитить
Sign up to leave a comment.

Articles