@attrs.define()
class SQLResult():
- pass
+ data = attrs.field(default=None)
+ type = attrs.field(default=None)
+
+ def build_statusmessage_row(self, cur):
+ self.type = 'status'
+ self.data = cur.statusmessage
+ return self
+
+ def build_rowcount_row(self, cur):
+ self.type = 'status'
+ self.data = f'{cur.rowcount} rows affected'
+ return self
+
+ def build_data_row(self, data):
+ self.type = 'data'
+ self.data = data
+ return self
+
+ def build_header_row(self, cur):
+ self.type = 'header'
+ self.data = [col.name for col in cur.description]
+ return self
-@attrs.define()
class ExecuteSQL(pgwui_core.core.DataLineProcessor):
'''
Attributes:
cur = self.cur
cur.execute(self.uf.data)
+ sql_results = self.uh.sql_results
nextset = True
while nextset is True:
+ first = True
while (row := cur.fetchone()) is not None:
- sql_result = SQLResult()
- sql_result.build(cur, row)
- self.uh.sql_results.append(sql_result)
+ if first:
+ sql_results.append(SQLResult().build_header_row(cur))
+ first = False
+ sql_results.append(SQLResult().build_data_row(row))
+ sql_results.append(SQLResult().build_statusmessage_row(cur))
+ sql_results.append(SQLResult().build_rowcount_row(cur))
nextset = cur.nextset()