| 
									
										
										
										
											2008-03-29 01:32:44 +00:00
										 |  |  | import sqlite3 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | con = sqlite3.connect(":memory:") | 
					
						
							|  |  |  | con.execute("create table person (id integer primary key, firstname varchar unique)") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Successful, con.commit() is called automatically afterwards | 
					
						
							|  |  |  | with con: | 
					
						
							|  |  |  |     con.execute("insert into person(firstname) values (?)", ("Joe",)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # con.rollback() is called after the with block finishes with an exception, the | 
					
						
							| 
									
										
										
										
											2011-10-31 02:41:06 +01:00
										 |  |  | # exception is still raised and must be caught | 
					
						
							| 
									
										
										
										
											2008-03-29 01:32:44 +00:00
										 |  |  | try: | 
					
						
							|  |  |  |     with con: | 
					
						
							|  |  |  |         con.execute("insert into person(firstname) values (?)", ("Joe",)) | 
					
						
							|  |  |  | except sqlite3.IntegrityError: | 
					
						
							|  |  |  |     print("couldn't add Joe twice") | 
					
						
							| 
									
										
										
										
											2019-05-20 03:22:20 +05:30
										 |  |  | 
 | 
					
						
							|  |  |  | # Connection object used as context manager only commits or rollbacks transactions, | 
					
						
							|  |  |  | # so the connection object should be closed manually | 
					
						
							|  |  |  | con.close() |