Обсуждение: cur.execute() syntax error

Поиск
Список
Период
Сортировка

cur.execute() syntax error

От
Rich Shepard
Дата:
This MWE (test_combobox.py) produces a syntax error and I'm not seeing why:
-----
import tkinter as tk
from tkinter import ttk

import psycopg2

class ContactDataForm(tk.Frame):
     # set up postgres
     # the connection
     con = psycopg2.connect(database='bustrac')
     # the cursor
     cur = con.cursor()

     def __init__(self, parent, *args, **kwargs):
         super().__init__(parent, *args, **kwargs)
         # A dict to keep track of input widgets
         self.inputs = {}

         self.inputs['Contact Type'] = LabelInput(
             ContactDataForm, 'contact_type',
             # query to fetch data from contacttypes table
             fetch_all = "SELECT * from contacttypes"
             cur.execute(fetch_all)
             # fetching all rows
             rows = cur.fetchall()
             input_class=ttk.Combobox([values = rows])
             input_var=tk.StringVar()
             # get selected value and bind it to a method
             cont_type = self.get() # selected value by mouse click
             con.close()
             )
         self.inputs['Contact Type'].grid(row0, column1)
         ContactDataForm.grid(row=0, column=0, sticky='we')
-----

When run from the shell:
$ python test_combobox.py
   File "test_combobox.py", line 24
     cur.execute(fetch_all)
       ^
SyntaxError: invalid syntax

Here python is python3 by default.

What am I not seeing?

Rich



Re: cur.execute() syntax error

От
Christophe Pettus
Дата:
It looks like the LabelInput constructor includes some code.  Did you mean something like:

       self.inputs['Contact Type'] = LabelInput(
           ContactDataForm, 'contact_type',)
       # query to fetch data from contacttypes table
       fetch_all = "SELECT * from contacttypes"
       cur.execute(fetch_all)
       # fetching all rows
       rows = cur.fetchall()
       input_class=ttk.Combobox([values = rows])
       input_var=tk.StringVar()
       # get selected value and bind it to a method
       cont_type = self.get() # selected value by mouse click
       con.close()
           

On Apr 4, 2022, at 15:02, Rich Shepard <rshepard@appl-ecosys.com> wrote:

This MWE (test_combobox.py) produces a syntax error and I'm not seeing why:
-----
import tkinter as tk
from tkinter import ttk

import psycopg2

class ContactDataForm(tk.Frame):
   # set up postgres
   # the connection
   con = psycopg2.connect(database='bustrac')
   # the cursor
   cur = con.cursor()

   def __init__(self, parent, *args, **kwargs):
       super().__init__(parent, *args, **kwargs)
       # A dict to keep track of input widgets
       self.inputs = {}

       self.inputs['Contact Type'] = LabelInput(
           ContactDataForm, 'contact_type',
           # query to fetch data from contacttypes table
           fetch_all = "SELECT * from contacttypes"
           cur.execute(fetch_all)
           # fetching all rows
           rows = cur.fetchall()
           input_class=ttk.Combobox([values = rows])
           input_var=tk.StringVar()
           # get selected value and bind it to a method
           cont_type = self.get() # selected value by mouse click
           con.close()
           )
       self.inputs['Contact Type'].grid(row0, column1)
       ContactDataForm.grid(row=0, column=0, sticky='we')
-----

When run from the shell:
$ python test_combobox.py
 File "test_combobox.py", line 24
   cur.execute(fetch_all)
     ^
SyntaxError: invalid syntax

Here python is python3 by default.

What am I not seeing?

Rich



Re: cur.execute() syntax error [RESOLVED]

От
Rich Shepard
Дата:
On Mon, 4 Apr 2022, Christophe Pettus wrote:

> It looks like the LabelInput constructor includes some code.  Did you mean something like:
>
>       self.inputs['Contact Type'] = LabelInput(
>           ContactDataForm, 'contact_type',)
>       # query to fetch data from contacttypes table
>       fetch_all = "SELECT * from contacttypes"
>       cur.execute(fetch_all)
>       # fetching all rows
>       rows = cur.fetchall()
>       input_class=ttk.Combobox([values = rows])
>       input_var=tk.StringVar()
>       # get selected value and bind it to a method
>       cont_type = self.get() # selected value by mouse click
>       con.close()

Christophe,

Sure looks like it.

Thanks,

Rich