2014-06-27 7 views
6

Sto tentando di inserire un valore datetime in una tabella MS SQL Server utilizzando pyodbc. Se lo faccio manualmente, qualcosa come:Inserimento di datetime in una tabella MS SQL utilizzando pyodbc

cursor.execute("""insert into currentvalue(value1,currentdatetime) 
            values(55,'2014-06-27 16:42:48.533')""") 

non ho alcun problema a tutti, ma quando cerco di fare:

currenttime = str(datetime.datetime.now()) 
cursor.execute("""insert into currentvalue(value1,currentdatetime) 
            values(55,"""+ currenttime+")") 

ho ottenuto questo errore:

SQL server Incorrect syntax near '07' which i think is the number after the date and starting the time.

Inoltre ho provato questo:

currenttime = "'"+str(datetime.datetime.now())+"'" 

e ora questo errore viene in su:

Conversion failed when converting date and/or time from character string.

+1

Usa [parametri] (https://code.google.com/p/pyodbc/wiki/GettingStarted#Parameters). – Bryan

risposta

8

Rimuovere il datetime di conversione di stringa e di utilizzare invece parametri:

.... 
cursor.execute("insert into currentvalue (value1,currentdatetime) values(?,?)", 
       (value1, datetime.datetime.now())) 
.... 
+0

grazie ha funzionato! – user3784140

1

È inoltre possibile utilizzare datetime.strftime() per convertire oggetto datetime alla stringa nel modo che ti serve. str (datetime) è una pessima idea.

currenttime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f") cursor.execute("""insert into currentvalue(value1,currentdatetime) values(55,"""+ currenttime+")")

+0

Penso che la tua soluzione non funzioni ed è proprio come il primo tentativo del questionario. Hai bisogno di almeno una fuga di stringhe. –