• Sqlite3.OperationalError: table stats has no column named user_id?

    @MichaelMih
    MichaelMih, после выполнения этого кода, уберите
    sql_lighter.delete_table("stats")
    sql_lighter.create_table()
    Так же уберите эти 2 функции из класса
  • Sqlite3.OperationalError: table stats has no column named user_id?

    @MichaelMih
    NoPressF,
    import sqlite3
    
    
    class SQLighter:
        def __init__(self, database):
            self.connection = sqlite3.connect(database, check_same_thread=False)
            self.cursor = self.connection.cursor()
            self.cursor.execute(
                "CREATE TABLE IF NOT EXISTS stats (user_id INT, user_name TEXT, survived INT, infected INT)")
            self.connection.commit()
    
        def add_user(self, id, name, survived, infected):
            with self.connection:
                obj = self.cursor.execute("INSERT INTO `stats` (user_id, user_name, survived, infected) VALUES (?,?,?,?)",
                                           (id, name, survived, infected))
                self.connection.commit()
                return obj
    
        def get_nick(self, id):
            with self.connection:
                self.cursor.execute("SELECT user_id FROM stats WHERE user_id = ?", (id,)).fetchall()
    
        def set_fast(self, id, survived, infected):
            with self.connection:
                self.cursor.execute("UPDATE stats SET infected = ?, survived = ? WHERE user_id = ?",
                                    (infected, survived, id))
                self.connection.commit()
    
        def delete_table(self, table):
            with self.connection:
                self.cursor.execute(f"DROP TABLE {table}")
                self.connection.commit()
    
        def create_table(self):
            self.cursor.execute(
                "CREATE TABLE IF NOT EXISTS stats (user_id INT, user_name TEXT, survived INT, infected INT)")
            self.connection.commit()
    
    
    sql_lighter = SQLighter("database.db")
    sql_lighter.delete_table("stats")
    sql_lighter.create_table()
    sql_lighter.add_user(982543922, "Вова", 1, 1)
    sql_lighter.add_user(754651730, "Андрей", 2, 2)
    sql_lighter.set_fast(982543922, 1, 1)
    sql_lighter.set_fast(754651730, 2, 2)
    sql_lighter.get_nick(754651730)
    sql_lighter.get_nick(982543922)
  • Как считать текст с браузера?

    @MichaelMih Автор вопроса
    а зачем нам гугл апи?
  • Sqlite3.OperationalError: table stats has no column named user_id?

    @MichaelMih
    NoPressF,
    ошибка NameError: name 'survived' is not defined указывает на то, что survived нет в таблице
  • Sqlite3.OperationalError: table stats has no column named user_id?

    @MichaelMih
    NoPressF, после запросов к базе, в которых вы добавляете какую-либо информацию, нужно писать
    connection.commit(), если мы берем информацию из базы данных, пишем fetchall или fetchone

    Добавим запись:
    conn = sqlite3.connect("db.db", check_same_thread=False)
    cur = conn.cursor()
    cur.execute("insert into users values ('name')"])
    conn.commit
  • Sqlite3.OperationalError: table stats has no column named user_id?

    @MichaelMih
    NoPressF,
    def add_user(self, id, name, survived, infected): 
          with self.connection:
              obj = self.cursor.execute("""INSERT INTO `stats` (user_id, user_name, survived, infected) VALUES (?,?,?,?)""", (id, name, survived, infected))
              self.commit()
              return obj
  • Sqlite3.OperationalError: table stats has no column named user_id?

    @MichaelMih
    Моя библиотека, для работы с базой

    import sqlite3
    from threading import Lock
    
    lock = Lock()
    
    
    def dict_factory(cursor, row):
        d = {}
        for idx, col in enumerate(cursor.description):
            d[col[0]] = row[idx]
        return d
    
    
    class DataBase:
    
        def __init__(self, _db):
            self._db = _db
            self.conn = sqlite3.connect(_db, check_same_thread=False)
            self.conn.row_factory = dict_factory
            self.cur = self.conn.cursor()
    
        def add_row(self, table, **params):
            item = []
            p = []
            values=[]
    
            for key, value in params.items():
                item.append(str(key))
                values.append(str(value))
                p.append("?")
    
            item = ",".join(item)
            p = ",".join(p)
            with lock:
                self.cur.execute(f"insert into {table} ({item}) values ({p})", values)
                self.conn.commit()
    
        def update_row(self, table, check=None, **params):
            item, values = "", []
    
            for key, value in params.items():
                if item == "":
                    item = item + f"{key}=?"
                else:
                    item = item + f",{key}=?"
                values.append(value)
            with lock:
                if check is None:
                    self.cur.execute(f"update {table} SET {item}", values)
                else:
                    self.cur.execute(f"update {table} SET {item} WHERE {check}", values)
                self.conn.commit()
    
        def get_row(self, table, row='*', check=None):
            if check is None:
                with lock:
                    respone = self.cur.execute(f"SELECT {row} FROM {table}")
                    return respone.fetchall()
            else:
                with lock:
                    respone = self.cur.execute(f"SELECT {row} FROM {table} WHERE {check}")
                    return respone.fetchall()
    
        def get_lat_row(self, table):
            with lock:
                sql = f"SELECT * FROM {table} ORDER BY id DESC LIMIT 1"
                rsp = self.cur.execute(sql)
                return rsp.fetchone()
    
    
    if __name__ == "__main__":
        db = DataBase("base.db")


    Пример использования

    db.add_row("users", user_id=432, text="fdsfsd") # добавить запись
    db.update_row("users", check="user_id=432", text="f")# обновляем запись с нужным узерид
    db.get_row("users",  check="user_id=432") #получаем запись с нужным юзерид

  • Как сделать многопоточное выполнение команд?

    @MichaelMih Автор вопроса
    Vindicar, дело не в сетевом лаге. У меня к примеру имеется 20 команд, и обработчик их выглядит таким образом:
    class MessagHandler:
        handlers = [Class1, Class2, Class3,  ... , Class20]
    
        def new_message(self, event):
            for handler in self.handlers:
                handler.handle(event)

    И это занимает определенное время, допустим одновременно 20.000 пользователей введут команду, и программа вызовет метод handle в классе каждой команды 400.000, т.е. как минимум проверка if regexp.find("команда") будет вызвана 400.000 раз, и это затратно по времени ( из-за того-что программа выполняется в одном потоке ). Создавать 20.000 потоков тоже не вариант, потому-что это ударяет в производительность системы, и требуется альтернативное решение проблемы.
  • Как запрограммировать светильник?

    @MichaelMih Автор вопроса
    это не интересно. Я сейчас начинаю осваивать робототехнику и подобную ахинею, в планах начать со светильника и закончить автоматическим пневматическим автоматом. Далее уже что придет в голову :D
  • На каком языке обычно пишут системы умного дома?

    @MichaelMih Автор вопроса
    Какие посоветуете курсы/книги по данной теме?
  • Есть ли какой либо сайт по получению описания городов/местности?

    @MichaelMih Автор вопроса
    Википедия даёт слишком много данных, например:
    Вводим город уфа, и получаем:

    Ответ
    span class = \ "searchmatch \"> Уфа </span> Результат запроса БД ПМО Ростовской области. Росстат. Получено "," timestamp ":" 2020-10-20T14: 57: 54Z "}, {" ns ": 0," title ":" Мустай Карим "," pageid ": 40230673," size ": 11673," wordcount ": 1024," snippet ":" Гимназия № 158 имени Мустая Карима Кировского района городского округа <span class = \ "searchmatch \"> город </span> <span class = \ "searchmatch \"> Уфа </span> Фото . img-fotki.yandex.ru & quot; Грандиозный бронзовый монумент Мустаю Кариму "," timestamp ":" 2020-09-17T16: 49: 49Z "}, {" ns ": 0," title ":" Зайнулла Расулев "," pageid ": 35635610," size ": 5314," wordcount ": 484," snippet " title ":" Административное деление Башкортостана "," pageid ": 735399," size ": 20053," wordcount ": 404," snippet ":" (городские населенные области): город республиканского подчинения (<span class = \ "searchmatch \"> город </span> республиканского значения); городской округ (городской район) - административный »,« timestamp »:« 2020-06-21T13: 27: 29Z »}, {« ns »: 0,« title »:« Список азербайджанских экзонимов »,« pageid »: 59217497, "size": 97912, "wordcount": 7422, "snippet": "Асфандияров А.З. История сел и деревень Башкортостана и сопредельных территорий. <span class = \ "searchmatch \"> Уфа </span>: Китап. 2009. [11] Архивировано 21 марта 2019 года в Wayback Machine В Бардымском ","


    А мне надо типо:

    Пример
    {"city": "Уфа",
    "Description": "Уфа – крупный научный, культурный, промышленный город в России, столица республики Башкортостан. Город был основан в месте слияния двух рек: Уфы и Белой. Уфа находится в ста километрах западнее хребтов Башкирского Урала. Город занимает площадь свыше семисот квадратных километров.",
    "photo": ["photo.ufa/ufa.jpg", "ufa.ru/foto.jpg"]
    }