@@ -126,6 +126,141 @@ def test_foreign_key_support(self):
126126 self .db1 .execute ("CREATE TABLE bar(foo_id INTEGER, FOREIGN KEY (foo_id) REFERENCES foo(id))" )
127127 self .assertEqual (self .db1 .execute ("INSERT INTO bar VALUES(50)" ), None )
128128
129+
130+ def test_qmark (self ):
131+ self .db .execute ("DROP TABLE IF EXISTS foo" )
132+ self .db .execute ("CREATE TABLE foo (firstname STRING, lastname STRING)" )
133+
134+ self .db .execute ("INSERT INTO foo VALUES (?, 'bar')" , "baz" )
135+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "baz" , "lastname" : "bar" }])
136+ self .db .execute ("DELETE FROM foo" )
137+
138+ self .db .execute ("INSERT INTO foo VALUES ('bar', ?)" , "baz" )
139+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "bar" , "lastname" : "baz" }])
140+ self .db .execute ("DELETE FROM foo" )
141+
142+ self .db .execute ("INSERT INTO foo VALUES (?, ?)" , "bar" , "baz" )
143+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "bar" , "lastname" : "baz" }])
144+
145+ self .db .execute ("INSERT INTO foo VALUES ('qux', 'quux')" )
146+ self .assertEqual (self .db .execute ("SELECT * FROM foo WHERE firstname = ?" , 'qux' ), [{"firstname" : "qux" , "lastname" : "quux" }])
147+ self .assertEqual (self .db .execute ("SELECT * FROM foo WHERE firstname = ? AND lastname = ?" , "qux" , "quux" ), [{"firstname" : "qux" , "lastname" : "quux" }])
148+ self .assertEqual (self .db .execute ("SELECT * FROM foo WHERE firstname = ? AND lastname = ?" , ("qux" , "quux" )), [{"firstname" : "qux" , "lastname" : "quux" }])
149+ self .assertEqual (self .db .execute ("SELECT * FROM foo WHERE firstname = ? AND lastname = ?" , ["qux" , "quux" ]), [{"firstname" : "qux" , "lastname" : "quux" }])
150+ self .db .execute ("DELETE FROM foo" )
151+
152+ self .db .execute ("INSERT INTO foo VALUES (?, ?)" , ("bar" , "baz" ))
153+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "bar" , "lastname" : "baz" }])
154+ self .db .execute ("DELETE FROM foo" )
155+
156+ self .db .execute ("INSERT INTO foo VALUES (?, ?)" , ["bar" , "baz" ])
157+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "bar" , "lastname" : "baz" }])
158+ self .db .execute ("DELETE FROM foo" )
159+
160+
161+ self .db .execute ("INSERT INTO foo VALUES (?,?)" , "bar" , "baz" )
162+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "bar" , "lastname" : "baz" }])
163+ self .db .execute ("DELETE FROM foo" )
164+
165+ self .db .execute ("DROP TABLE IF EXISTS bar" )
166+ self .db .execute ("CREATE TABLE bar (firstname STRING)" )
167+ self .db .execute ("INSERT INTO bar VALUES (?)" , "baz" )
168+ self .assertEqual (self .db .execute ("SELECT * FROM bar" ), [{"firstname" : "baz" }])
169+
170+ self .assertRaises (RuntimeError , self .db .execute , "INSERT INTO foo VALUES (?)" )
171+ self .assertRaises (RuntimeError , self .db .execute , "INSERT INTO foo VALUES (?, ?)" )
172+ # self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?)", ('bar', 'baz'))
173+ # self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?)", ['bar', 'baz'])
174+ self .assertRaises (RuntimeError , self .db .execute , "INSERT INTO foo VALUES (?, ?)" , 'bar' , 'baz' , 'qux' )
175+ self .assertRaises (RuntimeError , self .db .execute , "INSERT INTO foo VALUES (?, ?)" , ('bar' , 'baz' , 'qux' ))
176+ self .assertRaises (RuntimeError , self .db .execute , "INSERT INTO foo VALUES (?, ?)" , ['bar' , 'baz' , 'qux' ])
177+ self .assertRaises (RuntimeError , self .db .execute , "INSERT INTO foo VALUES (?, ?)" , 'bar' , baz = 'baz' )
178+
179+ def test_named (self ):
180+ self .db .execute ("DROP TABLE IF EXISTS foo" )
181+ self .db .execute ("CREATE TABLE foo (firstname STRING, lastname STRING)" )
182+
183+ self .db .execute ("INSERT INTO foo VALUES (:baz, 'bar')" , baz = "baz" )
184+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "baz" , "lastname" : "bar" }])
185+ self .db .execute ("DELETE FROM foo" )
186+
187+ self .db .execute ("INSERT INTO foo VALUES ('bar', :baz)" , baz = "baz" )
188+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "bar" , "lastname" : "baz" }])
189+ self .db .execute ("DELETE FROM foo" )
190+
191+ self .db .execute ("INSERT INTO foo VALUES (:bar, :baz)" , bar = "bar" , baz = "baz" )
192+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "bar" , "lastname" : "baz" }])
193+
194+ self .db .execute ("INSERT INTO foo VALUES ('qux', 'quux')" )
195+ self .assertEqual (self .db .execute ("SELECT * FROM foo WHERE firstname = :qux" , qux = 'qux' ), [{"firstname" : "qux" , "lastname" : "quux" }])
196+ self .assertEqual (self .db .execute ("SELECT * FROM foo WHERE firstname = :qux AND lastname = :quux" , qux = "qux" , quux = "quux" ), [{"firstname" : "qux" , "lastname" : "quux" }])
197+ self .db .execute ("DELETE FROM foo" )
198+
199+ self .db .execute ("INSERT INTO foo VALUES (:bar,:baz)" , bar = "bar" , baz = "baz" )
200+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "bar" , "lastname" : "baz" }])
201+ self .db .execute ("DELETE FROM foo" )
202+
203+ self .db .execute ("DROP TABLE IF EXISTS bar" )
204+ self .db .execute ("CREATE TABLE bar (firstname STRING)" )
205+ self .db .execute ("INSERT INTO bar VALUES (:baz)" , baz = "baz" )
206+ self .assertEqual (self .db .execute ("SELECT * FROM bar" ), [{"firstname" : "baz" }])
207+
208+ self .assertRaises (RuntimeError , self .db .execute , "INSERT INTO foo VALUES (:bar)" )
209+ self .assertRaises (RuntimeError , self .db .execute , "INSERT INTO foo VALUES (:bar, :baz)" )
210+ # self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:bar, :baz)", bar='bar', baz='baz', qux='qux')
211+ self .assertRaises (RuntimeError , self .db .execute , "INSERT INTO foo VALUES (:bar, :baz)" , 'baz' , bar = 'bar' )
212+
213+
214+ def test_numeric (self ):
215+ self .db .execute ("DROP TABLE IF EXISTS foo" )
216+ self .db .execute ("CREATE TABLE foo (firstname STRING, lastname STRING)" )
217+
218+ self .db .execute ("INSERT INTO foo VALUES (:1, 'bar')" , "baz" )
219+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "baz" , "lastname" : "bar" }])
220+ self .db .execute ("DELETE FROM foo" )
221+
222+ self .db .execute ("INSERT INTO foo VALUES ('bar', :1)" , "baz" )
223+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "bar" , "lastname" : "baz" }])
224+ self .db .execute ("DELETE FROM foo" )
225+
226+ self .db .execute ("INSERT INTO foo VALUES (:1, :2)" , "bar" , "baz" )
227+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "bar" , "lastname" : "baz" }])
228+
229+ self .db .execute ("INSERT INTO foo VALUES ('qux', 'quux')" )
230+ self .assertEqual (self .db .execute ("SELECT * FROM foo WHERE firstname = :1" , 'qux' ), [{"firstname" : "qux" , "lastname" : "quux" }])
231+ self .assertEqual (self .db .execute ("SELECT * FROM foo WHERE firstname = :1 AND lastname = :2" , "qux" , "quux" ), [{"firstname" : "qux" , "lastname" : "quux" }])
232+ self .assertEqual (self .db .execute ("SELECT * FROM foo WHERE firstname = :1 AND lastname = :2" , ("qux" , "quux" )), [{"firstname" : "qux" , "lastname" : "quux" }])
233+ self .assertEqual (self .db .execute ("SELECT * FROM foo WHERE firstname = :1 AND lastname = :2" , ["qux" , "quux" ]), [{"firstname" : "qux" , "lastname" : "quux" }])
234+ self .db .execute ("DELETE FROM foo" )
235+
236+ self .db .execute ("INSERT INTO foo VALUES (:1, :2)" , ("bar" , "baz" ))
237+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "bar" , "lastname" : "baz" }])
238+ self .db .execute ("DELETE FROM foo" )
239+
240+ self .db .execute ("INSERT INTO foo VALUES (:1, :2)" , ["bar" , "baz" ])
241+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "bar" , "lastname" : "baz" }])
242+ self .db .execute ("DELETE FROM foo" )
243+
244+
245+ self .db .execute ("INSERT INTO foo VALUES (:1,:2)" , "bar" , "baz" )
246+ self .assertEqual (self .db .execute ("SELECT * FROM foo" ), [{"firstname" : "bar" , "lastname" : "baz" }])
247+ self .db .execute ("DELETE FROM foo" )
248+
249+ self .db .execute ("DROP TABLE IF EXISTS bar" )
250+ self .db .execute ("CREATE TABLE bar (firstname STRING)" )
251+ self .db .execute ("INSERT INTO bar VALUES (:1)" , "baz" )
252+ self .assertEqual (self .db .execute ("SELECT * FROM bar" ), [{"firstname" : "baz" }])
253+
254+ self .assertRaises (RuntimeError , self .db .execute , "INSERT INTO foo VALUES (:1)" )
255+ self .assertRaises (RuntimeError , self .db .execute , "INSERT INTO foo VALUES (:1, :2)" )
256+ # self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:1)", ('bar', 'baz'))
257+ # self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:1)", ['bar', 'baz'])
258+ # self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:1, :2)", 'bar', 'baz', 'qux')
259+ # self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:1, :2)", ('bar', 'baz', 'qux'))
260+ # self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:1, :2)", ['bar', 'baz', 'qux'])
261+ self .assertRaises (RuntimeError , self .db .execute , "INSERT INTO foo VALUES (:1, :2)" , 'bar' , baz = 'baz' )
262+
263+
129264if __name__ == "__main__" :
130265 suite = unittest .TestSuite ([
131266 unittest .TestLoader ().loadTestsFromTestCase (SQLiteTests ),
0 commit comments