omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    Tableview reload

    Pythonista
    4
    19
    5774
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • JonB
      JonB last edited by

      You should post your solution (or a link to gist) back here to help others that might have similar issues.

      1 Reply Last reply Reply Quote 0
      • Rufat
        Rufat last edited by Rufat

        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')
        
        1 Reply Last reply Reply Quote 0
        • soydepr
          soydepr last edited by

          But. Can you bring a dB from another place and drop it in Pythonista and how u do it

          cvp 1 Reply Last reply Reply Quote 0
          • cvp
            cvp @soydepr last edited by cvp

            @soydepr you can import the db file into Pythonista but you could even open/access it without importing it, like explained here for a script.

            Here under, how to import

            1 Reply Last reply Reply Quote 0
            • soydepr
              soydepr last edited by soydepr

              @cvp said:

              import

              For me the file is not accessible greyes out
              https://imgur.com/KTy2w8o all my dB files are not selectables

              cvp 2 Replies Last reply Reply Quote 0
              • cvp
                cvp @soydepr last edited by cvp

                @soydepr said:

                greyes out

                You're right, sorry

                If you use "external files", it will work

                1 Reply Last reply Reply Quote 1
                • cvp
                  cvp @soydepr last edited by cvp

                  @soydepr other solution: you can share a .db file from the Files app to Pythonista and run the standard "import file" script

                  soydepr 1 Reply Last reply Reply Quote 0
                  • soydepr
                    soydepr @cvp last edited by

                    @cvp is original solution a bug ,

                    Thanks I confirm your other solution does work

                    cvp 1 Reply Last reply Reply Quote 0
                    • cvp
                      cvp @soydepr last edited by cvp

                      @soydepr you can also try

                      	f = dialogs.pick_document() 
                      

                      .db files are not grayed

                      1 Reply Last reply Reply Quote 1
                      • soydepr
                        soydepr last edited by

                        This post is deleted!
                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post
                        Powered by NodeBB Forums | Contributors