2012-01-21 24 views
3

將SQL datetime數據類型插入行的語法是什麼? Python中的以下內容僅爲timestamp變量提供了一個NULL值。什麼是INSERT datetime變量的語法INTO VALUES

timestamp = datetime.datetime.today() 
print timestamp 
query = "INSERT INTO table1 (name, class, time_update) VALUES('ONE','TWO',@timestamp)" 
cursor.execute(query) 
+1

看到這個問題:http://stackoverflow.com/questions/1947750/does-python-support-mysql-prepared-statements – ean5533

+0

你是否正確地傳入'timestamp'變量? http://stackoverflow.com/questions/902408/how-to-use-variables-in-sql-statement-in-python – JSuar

回答

2

我敢肯定,這取決於它的後臺數據庫,你正在使用,但在SQLite的,例如,您需要將您的參數發送作爲查詢的一部分(這是一個參數化語句是所有關於):

timestamp = datetime.datetime.today() 
print timestamp 
query = "INSERT INTO table1 (name, class, time_update) VALUES('ONE','TWO',?)" 
cursor.execute(query, (timestamp,)) 
1

它確實取決於數據庫。對於MySQL,根據this,您可以以多種格式指定時間戳/日期時間,主要基於ISO8601:'YYYY-MM-DD','YY-MM-DD','YYYYMMDD'和'YYMMDD'(不帶分隔符)或者您想要更高的精度'YYYY-MM-DD HH:MM:SS'或'YY-MM-DD HH:MM:SS'('YYYYMMDDHHMMSS'或'YYMMDDHHMMSS')。

就查詢而言,您應該通過在查詢字符串中指定佔位符來設置參數(它更安全,是一種非常好的習慣)。對於MySQL,你可以這樣做:

query = "INSERT INTO table1 (name, class, time_update) VALUES('ONE','TWO',%s)" 
cursor.execute(query, (timestamp,)) 

但對於佔位符語法變化(取決於DB接口/驅動器)—請參閱您的DB/Python接口的文檔。

相關問題