Here is how it works for me.
import ui
import sqlite3 as db
import dialogs
conn = db.connect('pythonsqlite.db')
conn.row_factory = lambda cursor, row: row[0]
c = conn.cursor()
ids = c.execute('SELECT name FROM Names').fetchall()
ids1 = c.execute('SELECT surname FROM Names').fetchall()
class MyTableViewDataSource (object):
def __init__(self):
self.items = ids
self.items1 = ids1
def tableview_number_of_sections(self, tableview):
# Return the number of sections (defaults to 1)
return 1
def tableview_number_of_rows(self, tableview, section):
# Return the number of rows in the section
return len(self.items)
def tableview_cell_for_row(self, tableview, section, row):
# Create and return a cell for the given section/row
cell = ui.TableViewCell('subtitle')
cell.text_label.text = self.items[row]
cell.detail_text_label.text = self.items1[row]
return cell
def tableview_title_for_header(self, tableview, section):
# Return a title for the given section.
# If this is not implemented, no section headers will be shown.
return ('Name')
def tableview_can_delete(self, tableview, section, row):
# Return True if the user should be able to delete the given row.
return True
def tableview_can_move(self, tableview, section, row):
# Return True if a reordering control should be shown for the given row (in editing mode).
return True
def tableview_delete(self, tableview, section, row):
# Called when the user confirms deletion of the given row.
#my = ("Name=""'"+tableview.data_source.data[row]+"'")
#print(my)
print ('Delete row ' + tableview.data_source.items[row])
sqliteConnection = db.connect('pythonsqlite.db')
cursor = sqliteConnection.cursor()
print("Connected to SQLite")
# Deleting single record now
sql_delete_query = "DELETE from Names where Name=""'"+tableview.data_source.items[row]+"'"
print(sql_delete_query)
cursor.execute(sql_delete_query)
sqliteConnection.commit()
print("Record deleted successfully ")
del tableview.data_source.items[row]
del tableview.data_source.items1[row]
cursor.close()
tableview.reload()
pass
def tableview_move_row(self, tableview, from_section, from_row, to_section, to_row):
# Called when the user moves a row with the reordering control (in editing mode).
pass
def add(self, sender):
item = dialogs.input_alert('Add your name')
item1 = dialogs.input_alert('Add your surname')
if not item == None:
self.items.append(item)
self.items1.append(item1)
view['tableview1'].reload()
sqliteConnection = db.connect('pythonsqlite.db')
cursor = sqliteConnection.cursor()
print("Connected to SQLite")
# adding single record now
sql_add_data = "INSERT INTO Names (Name, Surname) VALUES "+"("+"'"+item+"'"+", "+"'"+item1+"'"+")"
cursor.execute(sql_add_data)
sqliteConnection.commit()
cursor.close()
view = ui.load_view('MyForm')
source = MyTableViewDataSource()
view.right_button_items = [ui.ButtonItem(title='add', action=source.add)]
view['tableview1'].data_source = source
view.present('sheet')