Cetus Group
Cetus Logo
Информационные системы и программное обеспечение




Поддержка

 
Разработка программного обеспечения средствами языка Python и библиотеки Qt (PyQt)
Размещено 06.01.2006
А.Г. © Часть 3 - "Доступ к базе данных сервера MySQL средствами модуля MySQLdb"

Для работы понадобятся сервер mySQL, модуль MySQLdb и база данных, созданная в примере "Использование модуля MySQLdb".

1. Средствами программы designer создаем форму. Соединений "сигнал-слот" в форме не выполняем, создадим такое соединение в программном коде. При создании формы даем виджетам имена как на рисунке.

2. После двойного щелчка на таблице устанавливаем для нее две колонки и удаляем все строки:

Сохраняем результаты в файл "form1.ui".

3. С помощью pyuic из файла form1.ui генерируем form1.py и реализуем производный класс формы Form1Impl с функциями доступа к базе данных в файле form1impl.py:

# -*- coding: utf-8 -*-

from form1 import *
from MySQLdb import connections

class Form1Impl(Form1):
    def __init__(self):
        Form1.__init__(self)
	self.connect(self.pushButton,SIGNAL("pressed()"),self.SlotInsert)
	self.db=connections.Connection(db='test', host='localhost', user='cetus')
	self.curs=self.db.cursor()
	self.Select()
		    
    def Select(self):
	row=self.curs.execute("SELECT * from device;")
	self.table.setNumRows(row)
	rw=self.curs.fetchone()
	for i in range(row):
	    self.table.setText(i,0,rw[1])
	    self.table.setText(i,1,str(rw[2]))
	    rw=self.curs.fetchone()

    def SlotInsert(self):
        row=self.curs.execute("INSERT INTO device VALUES(0,'%s','%s')" % \
		(self.lineEditName.text(),self.lineEditCost.text()))
        self.Select()
Команда "self.connect(self.pushButton,SIGNAL("pressed()"),self.SlotInsert)" назначает сигналу "pressed()" кнопки обработчик "SlotInsert".

4. Добавляем модуль "main.py".

#!/usr/bin/python

import sys
from form1impl import *

app=QApplication(sys.argv)
form=Form1Impl()
app.setMainWidget(form)
form.show()
app.exec_loop()

5. Устанавливаем для main.py право на выполнение. Выполняем.


Copyright©2005, Cetus Group : All rights reserved.