Доступ к базе данных MySQL с использованием MySQLdb

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

Используйте метод execute курсора для взаимодействия с базой данных и время от времени фиксируйте изменения, используя метод commit объекта соединения.

Как только все будет сделано, не забудьте закрыть курсор и соединение.

Вот класс Dbconnect со всем, что вам нужно.

 import MySQLdb

class Dbconnect(object):

    def __init__(self):

        self.dbconection = MySQLdb.connect(host='host_example',
                                           port=int('port_example'),
                                           user='user_example',
                                           passwd='pass_example',
                                           db='schema_example')
        self.dbcursor = self.dbconection.cursor()

    def commit_db(self):
        self.dbconection.commit()

    def close_db(self):
        self.dbcursor.close()
        self.dbconection.close()

 

Взаимодействовать с базой данных просто. После создания объекта просто используйте метод execute.

 db = Dbconnect()
db.dbcursor.execute('SELECT * FROM %s' % 'table_example')

 

Если вы хотите вызвать хранимую процедуру, используйте следующий синтаксис. Обратите внимание, что список параметров не является обязательным.

 db = Dbconnect()
db.callproc('stored_procedure_name', [parameters] )

 

После выполнения запроса вы можете получить доступ к результатам несколькими способами. Объект курсора является генератором, который может получить все результаты или быть зациклен.

 results = db.dbcursor.fetchall()
for individual_row in results:
    first_field = individual_row[0]

 

Если вы хотите цикл, использующий непосредственно генератор:

 for individual_row in db.dbcursor:
    first_field = individual_row[0]

 

Если вы хотите зафиксировать изменения в базе данных:

 db.commit_db()

 

Если вы хотите закрыть курсор и соединение:

 db.close_db()