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.
    • Rufat
      Rufat last edited by

      I did it, thank you so much!

      1 Reply Last reply Reply Quote 0
      • 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