2012-01-21 27 views
3

SQL datetimeデータ型を1行に挿入する構文は何ですか? 次のPythonでは、timestamp変数にのみNULL値が与えられます。INSERT datetime変数の構文INTO VALUE

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/Pythonインタフェースのためのマニュアルを参照してください(DBインタフェース/ドライバに依存)が変化します。