2017-09-01 7 views
1

Je souhaite insérer une ligne d'une table dans une nouvelle table, mais modifiez une valeur en même temps. Est-il possible de le faire en une seule déclaration?Est-il possible à la fois d'insérer et de mettre à jour dans une seule instruction sqlite?

Actuellement, j'ai:

db = sqlite3.connect('C:/Desktop') 
db.execute("""insert into table2 select * from table1 where 
    ID = {0}""".format(5)) 
db.execute("""update table2 set column = {0} where ID = {1}""".format("new string",5) 
db.commit() 
db.close() 

Répondre

3

Remplacer * avec la liste réelle de la colonne, puis remplacer cette colonne avec la nouvelle valeur:

INSERT INTO Table2 
SELECT ThisColumn, ThatColumn, 'new string', OtherColumns 
FROM Table1 
WHERE ID = ?; 
0

oui, vous pouvez utiliser

INSERT OR REPLACE INTO table(column_list) 
VALUES(value_list); 
+0

Cela ne fonctionne pas pour le problème dans la question. –