Primero que nada, no pongas mensajes solo para subir la popularidad del post.
Segundo, si no te responden es por que no has puesto ni siquiera un código que se pueda ejecutar y ver cual es el error.
Después de investigar un poco, leer la documentación y de mas resulto ser muy sencillo.
Código Python:
Ver originalfrom PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtSql import *
import sys
import os
class MainForm(QDialog):
def __init__(self):
super(MainForm, self).__init__()
self.assetModel = QSqlTableModel(self)
self.assetModel.flags = self.flags
self.assetModel.setEditStrategy(QSqlTableModel.OnRowChange)
self.assetModel.setTable("testing")
self.assetModel.select()
self.assetView = QTableView()
self.assetView.setModel(self.assetModel)
self.assetView.setSelectionMode(QTableView.SingleSelection)
self.assetView.setSelectionBehavior(QTableView.SelectRows)
dataLayout = QVBoxLayout()
dataLayout.addWidget(self.assetView, 1)
layout = QHBoxLayout()
layout.addLayout(dataLayout, 1)
self.setLayout(layout)
self.setWindowTitle("Asset Manager")
def flags(self, idx):
baseflags = QAbstractTableModel.flags(self.assetModel, idx)
if idx.column() == 1:
return baseflags | Qt.ItemIsEditable
else:
return baseflags
if __name__ == '__main__':
app = QApplication(sys.argv)
filename = os.path.join(os.path.dirname(__file__), "test.db")
create = not QFile.exists(filename)
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName(filename)
if not db.open():
QMessageBox.warning(None, "Asset Manager",
QString("Database Error: %1").arg(db.lastError().text()))
sys.exit(1)
print "Creating table..."
query = QSqlQuery()
r = query.exec_('drop table testing')
r = query.exec_("""CREATE TABLE testing (
id INTEGER,
value VARCHAR(20)
)""" )
query.exec_("INSERT INTO testing (id, value) "
"VALUES (1, '2')")
query.exec_("INSERT INTO testing (id, value) "
"VALUES (3, '4')")
m = MainForm()
m.show()
app.exec_()
Básicamente es el link que te había pasado el mi primer respuesta.