Skip to content

Commit e3e50eb

Browse files
committed
refs #281, Pandas partially working
Sorting code moved into DataSet. Still some work to do, but very close to being functional again
1 parent a529690 commit e3e50eb

File tree

1 file changed

+33
-22
lines changed

1 file changed

+33
-22
lines changed

pysimplesql/pysimplesql.py

+33-22
Original file line numberDiff line numberDiff line change
@@ -1007,7 +1007,6 @@ def requery(
10071007

10081008
rows = self.driver.execute(query)
10091009
self.rows = rows
1010-
print(self.rows)
10111010
# now we can restore the sort order
10121011
self.load_sort_settings(sort_settings)
10131012
self.sort(self.table)
@@ -2190,8 +2189,8 @@ def sort_by_column(self, column: str, table: str, reverse=False) -> None:
21902189
:param reverse: Reverse the sort; False = ASC, True = DESC
21912190
:returns: None
21922191
"""
2193-
# Target sorting by this ResultSet
2194-
rows = self # search criteria is based on rows
2192+
# Target sorting by this DataFrame
2193+
rows = self.rows # search criteria is based on rows
21952194
target_col = column # Looking in rows for this column
21962195
target_val = column # to be equal to the same column in self.rows
21972196

@@ -2209,6 +2208,9 @@ def sort_by_column(self, column: str, table: str, reverse=False) -> None:
22092208
].description_column # and return the value in this column
22102209
break
22112210

2211+
print("rels", rels, "\n")
2212+
print("rows", rows, "\n")
2213+
22122214
def get_sort_key(row):
22132215
try:
22142216
return next(
@@ -2220,11 +2222,14 @@ def get_sort_key(row):
22202222
return None
22212223

22222224
try:
2223-
self.sort_values(
2224-
by=self.index, key=get_sort_key, ascending=not reverse, inplace=True
2225+
self.rows.sort_values(
2226+
by=rows,
2227+
key=get_sort_key,
2228+
ascending=not reverse,
2229+
inplace=True,
22252230
)
22262231
except KeyError:
2227-
logger.debug(f"ResultSet could not sort by column {column}. KeyError.")
2232+
logger.debug(f"DataFrame could not sort by column {column}. KeyError.")
22282233

22292234
def sort_by_index(self, index: int, table: str, reverse=False):
22302235
"""
@@ -2237,7 +2242,7 @@ def sort_by_index(self, index: int, table: str, reverse=False):
22372242
:param reverse: Reverse the sort; False = ASC, True = DESC
22382243
:returns: None
22392244
"""
2240-
column = self.columns[index]
2245+
column = self.rows.columns[index]
22412246
self.sort_by_column(column, table, reverse)
22422247

22432248
def store_sort_settings(self) -> list:
@@ -2248,7 +2253,7 @@ def store_sort_settings(self) -> list:
22482253
22492254
:returns: A list containing the sort_column and the sort_reverse
22502255
"""
2251-
return [self.sort_column, self.sort_reverse]
2256+
return [self.rows.attrs["sort_column"], self.rows.attrs["sort_reverse"]]
22522257

22532258
def load_sort_settings(self, sort_settings: list) -> None:
22542259
"""
@@ -2257,8 +2262,8 @@ def load_sort_settings(self, sort_settings: list) -> None:
22572262
22582263
:param sort_settings: A list as returned by `ResultSet.store_sort_settings()`
22592264
"""
2260-
self.sort_column = sort_settings[0]
2261-
self.sort_reverse = sort_settings[1]
2265+
self.rows.attrs["sort_column"] = sort_settings[0]
2266+
self.rows.attrs["sort_reverse"] = sort_settings[1]
22622267

22632268
def sort_reset(self) -> None:
22642269
"""
@@ -2278,10 +2283,16 @@ def sort(self, table: str) -> None:
22782283
`ResultSet.sort_by_column()`
22792284
:returns: None
22802285
"""
2281-
if self.sort_column is None:
2286+
if self.rows.attrs["sort_column"] is None:
2287+
print("Sort column is None. Resetting sort.")
22822288
self.sort_reset()
22832289
else:
2284-
self.sort_by_column(self.sort_column, table, self.sort_reverse)
2290+
print(
2291+
f"Sort column is not None. Sorting by column {self.rows.attrs['sort_column']}"
2292+
)
2293+
self.sort_by_column(
2294+
self.rows.attrs["sort_column"], table, self.rows.attrs["sort_reverse"]
2295+
)
22852296

22862297
def sort_cycle(self, column: str, table: str) -> int:
22872298
"""
@@ -2293,17 +2304,17 @@ def sort_cycle(self, column: str, table: str) -> int:
22932304
:returns: A ResultSet sort constant; ResultSet.SORT_NONE, ResultSet.SORT_ASC, or
22942305
ResultSet.SORT_DESC
22952306
"""
2296-
if column != self.sort_column:
2297-
self.sort_column = column
2298-
self.sort_reverse = False
2307+
if column != self.rows.attrs["sort_column"]:
2308+
self.rows.attrs["sort_column"] = column
2309+
self.rows.attrs["sort_reverse"] = False
22992310
self.sort(table)
23002311
return SORT_ASC
2301-
if not self.sort_reverse:
2302-
self.sort_reverse = True
2312+
if not self.rows.attrs["sort_reverse"]:
2313+
self.rows.attrs["sort_reverse"] = True
23032314
self.sort(table)
23042315
return SORT_DESC
2305-
self.sort_reverse = False
2306-
self.sort_column = None
2316+
self.rows.attrs["sort_reverse"] = False
2317+
self.rows.attrs["sort_column"] = None
23072318
self.sort(table)
23082319
return SORT_NONE
23092320

@@ -5181,9 +5192,9 @@ def update_headings(
51815192
if (
51825193
x["column"] == sort_column
51835194
and sort_column is not None
5184-
and sort_order != ResultSet.SORT_NONE
5195+
and sort_order != SORT_NONE
51855196
):
5186-
x["heading"] += asc if sort_order == ResultSet.SORT_ASC else desc
5197+
x["heading"] += asc if sort_order == SORT_ASC else desc
51875198
element.Widget.heading(i, text=x["heading"], anchor="w")
51885199

51895200
def enable_sorting(self, element: sg.Table, fn: callable) -> None:
@@ -5823,7 +5834,7 @@ def default_row_dict(self, dataset: DataSet) -> dict:
58235834
q = f"SELECT {default} AS val FROM {table};"
58245835

58255836
rows = self.driver.execute(q)
5826-
if rows.exception is None:
5837+
if rows.attrs["exception"] is None:
58275838
try:
58285839
default = rows.fetchone()["val"]
58295840
except KeyError:

0 commit comments

Comments
 (0)