[Tutor] sqlite3 place holder problem

Alex Kleider akleider at sonic.net
Fri Oct 4 04:09:02 CEST 2013


On 2013-10-03 18:52, Alex Kleider wrote:
> The following class method
> """
> 
>     def insert(self, DataBase=DataBase, Table=Table):
>         """
>         Insert instance of ClassMate into <DataBase> <Table>.
>         """
>         with sqlite3.connect(DataBase) as con:
>             cur = con.cursor()
>             row = \
>             ('NULL', self.first, self.last, self.partner,
>             self.address, self.phone, self.email, )
>             directive = "INSERT INTO %s VALUES ?;" % (Table, )
>             cur.execute(directive, row)
> """
> gives the following error:
> 
> """
> Traceback (most recent call last):
>   File "./v_temp.py", line 155, in <module>
>     go_on.insert()
>   File "./v_temp.py", line 70, in insert
>     cur.execute(directive, row)
> sqlite3.OperationalError: near "?": syntax error
> """
> (explanation: 'go_on' is an instance of my class in the __main__)
> 
> It was working fine when I was using string formatting but I can't
> seem to get the syntax right using the qmark method which the
> documentation suggests is the better way to do it.
> 
> Can anyone spot what should be changed?
> (Python 2.7 on Ubuntu )
> 
> Thanks in advance.
> Alex

Sorry to have bothered the list;
I found the problems (there were two!)
Here's the corrected version in case it's of interest to anyone:
"""
     def insert(self, DataBase=DataBase, Table=Table):
         """
         Insert instance of ClassMate into <DataBase> <Table>.
         """
         with lite.connect(DataBase) as con:
             cur = con.cursor()
             row = \
             (self.first, self.last, self.partner,
             self.address, self.phone, self.email, )
             directive = \
                 "INSERT INTO %s VALUES (NULL, ?, ?, ?, ?, ?, ?)" \
                 % (Table, )
             cur.execute(directive, row)
"""



More information about the Tutor mailing list