Saltar al contenido

Cómo insertar current_timestamp en Postgres a través de Python

Solución:

Una marca de tiempo no tiene “formato”.

La forma recomendada de lidiar con las marcas de tiempo es usar un PreparedStatement donde simplemente pasa un marcador de posición en el SQL y pasa un objeto “real” a través de la API de su lenguaje de programación. Como no conozco Python, no sé si es compatible con PreparedStatements y cómo sería la sintaxis para eso.

Si desea colocar un literal de marca de tiempo en su SQL generado, deberá seguir algunas reglas de formato al especificar el valor (un literal tiene un formato).

El método de Ivan funcionará, aunque no estoy 100% seguro de si depende de la configuración del servidor PostgreSQL.

Una solución independiente de la configuración (y del idioma) para especificar un literal de marca de tiempo es el estándar ANSI SQL:

 INSERT INTO some_table 
 (ts_column) 
 VALUES 
 (TIMESTAMP '2011-05-16 15:36:38');

Si, esa es la palabra clave TIMESTAMP seguido de una marca de tiempo formateada en estilo ISO (el TIMESTAMP palabra clave define ese formato)

La otra solución sería utilizar el to_timestamp() función donde puede especificar el formato del literal de entrada.

 INSERT INTO some_table 
 (ts_column) 
 VALUES 
 (to_timestamp('16-05-2011 15:36:38', 'dd-mm-yyyy hh24:mi:ss'));

Si utiliza psycopg2 (y posiblemente alguna otra biblioteca cliente), simplemente puede pasar un Python datetime objeto como parámetro para una consulta SQL:

from datetime import datetime, timezone

dt = datetime.now(timezone.utc)
cur.execute('INSERT INTO mytable (mycol) VALUES (%s)', (dt,))

(Esto supone que el timestamp with time zone type se utiliza en el lado de la base de datos).

Aquí se enumeran más tipos de Python que se pueden adaptar a SQL (y devolver como objetos de Python cuando se ejecuta una consulta).

Solo usa ‘ahora’

http://www.postgresql.org/docs/8.0/static/datatype-datetime.html

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *