Вопрос: Как изменить функцию на класс в Python? - PullRequest
0 голосов
/ 26 апреля 2019

Я хочу создать класс с методами, чтобы мне не приходилось создавать несколько функций. Ниже приведен мой код, я хочу получить класс с двумя методами. Метод 1: SQL-запрос, метод 2: SQL-вставка.

Любой отзыв очень ценится.

Stefan

def dbconnect():
    dbconn = pymysql.connect(host='192.168.1.2', port=3307,  user='username', passwd='password', db='dbname')
    try:
        cur = dbconn.cursor()
        sqlQuery = "select * from data"
        sqlQuerygetlast = "SELECT * FROM data ORDER BY id DESC LIMIT 1"
        sqlQuerygetlast10 = "SELECT * FROM data ORDER BY id DESC LIMIT 10"
        cur.execute(sqlQuerygetlast10)
        rows = cur.fetchall()
        for row in rows:
            print(row)
    except Exception as e:
        print("Exeception occured:{}".format(e))
    finally:
        #dbconn.commit()
        dbconn.close()

Моя цель - вызывать методы из моего кода, то есть запрашивать оператор выбора.

Большое спасибо Stefan

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Полагаю, вы имеете в виду, что не хотите создавать несколько соединений?

Тогда вам следует реализовать его как Диспетчер контекста :

class DB:
    def __init__(self):
        self.dbconn = None

    def get_last(self, n)
        try:
            cur = self.dbconn.cursor()
            sqlQuerygetlast = "SELECT * FROM data ORDER BY id DESC LIMIT {}".format(n)
            cur.execute(sqlQuerygetlast)
            rows = cur.fetchall()
            for row in rows:
                print(row)
        except Exception as e:
            print("Exeception occured:{}".format(e))
        finally:
            # self.dbconn.commit()

    def some_other_method(self):
        self.dbconn.do_something()

    def __enter__(self):
        self.dbconn = pymysql.connect(
            host='192.168.1.2', 
            port=3307,  
            user='username', 
            passwd='password', 
            db='dbname'
        )
        return self

    def __exit__(self, exc_type, exc_value, exc_traceback):
        dbconn.close()
        return True

ииспользуйте его следующим образом:

with DB() as db:
    db.get_last(1)
    db.get_last(10)
    db.some_other_method()

Это создаст только один экземпляр подключения к базе данных и закроется после его завершения.

0 голосов
/ 26 апреля 2019

Написание класса на Python довольно просто.

Вот пример того, как написать классический класс Person и как использовать свойства и методы.

В частности, метод presentation также использует свойство name .

Из этого примера вы можете легко перейти к реализации класса Database:

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def presentation(self):
    print("Hello my name is " + self.name)

p1 = Person("John", 36)
p1.presentation()

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

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