Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Исходник Простенький прикол для работы с sqlite

  • Автор темы Автор темы notdaisy
  • Дата начала Дата начала
keep silence
Участник
Участник
Статус
Оффлайн
Регистрация
17 Дек 2018
Сообщения
548
Реакции
201
Люблю uncaught exceptions =)
Python:
Expand Collapse Copy
import sqlite3
from typing import Iterable

class SQLTool:
    path = str()

    def connect(self):
        return sqlite3.connect(self.path)

    def close(self, database):
        database.close()

    def cursor(self, database):
        return database.cursor()

    def commit(self, database):
        try:
            database.commit()
            return True
        except:
            return False

    def execute(self, command: str, params: Iterable = None):
        _db = self.connect()
        _cursor = self.cursor(_db)

        try:
            if params != None:
                _cursor.execute(command, params)
            else:
                _cursor.execute(command)

            _success = self.commit(_db)
        except sqlite3.Error as error:
            print('sqltool error:', error)
            _success = False
    
        self.close(_db)
        return _success

    def fetchone(self, command: str, params: Iterable = None):
        _db = self.connect()
        _cursor = self.cursor(_db)
        _db.row_factory = lambda cursor, row: row[0]

        try:
            if params != None:
                _result = _cursor.execute(command, params).fetchone()
            else:
                _result = _cursor.execute(command).fetchone()
        except sqlite3.Error as error:
            print('sqltool error:', error)
            _result = None
    
        _db.row_factory = None
        self.close(_db)
        return _result

    def fetchall(self, command: str, params: Iterable = None):
        _db = self.connect()
        _cursor = self.cursor(_db)
        _db.row_factory = lambda cursor, row: row[0]

        try:
            if params != None:
                _result = _cursor.execute(command, params).fetchall()
            else:
                _result = _cursor.execute(command).fetchall()
        except sqlite3.Error as error:
            print('sqltool error:', error)
            _result = None
    
        _db.row_factory = None
        self.close(_db)

        return _result
Usage:
Python:
Expand Collapse Copy
tmp = SQLTool()
tmp.path = your_path
tmp.execute('INSERT INTO your_table_name (var) VALUES((?))', (your_var,))
Первый аргумент - сама команда, второй - "тупля" с параметрами (можно не указывать)
 
а зачем? ты никак не сокращаешь этим количество строк, а только увеличиваешь папку сурса на 1 бесполезную либу
 
Назад
Сверху Снизу