使用pyscopg2和PostgreSQL将datetime插入数据库

时间:2015-05-14 17:25:02

标签: postgresql psycopg2

我在使用带有pyscopg2的insert语句将日期时间戳插入sql数据库时遇到了问题。

下面的代码是每次按下按钮时,它应该在包含buildingID(只是文本)的数据库中插入一行,以及按下按钮时的日期和时间。

我无法弄清楚如何插入当前日期和时间。

// Empire Builder.cpp : main project file.

#include "stdafx.h"
#include "MainMenu.h"

using namespace EmpireBuilder;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    // Enabling Windows XP visual effects before any controls are created
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 

    // Create the main window and run it
    Application::Run(gcnew Form1());
    return 0;
}

1 个答案:

答案 0 :(得分:11)

虽然您当然 可以通过 psycopg2 Python 日期时间插入一行 - 但您需要创建一个datetime对象设置为当前时间,可以like this或通过Delorean之类的模块完成 - 因为你只想要当前时间,我只想把它留给 Postgres 本身。

e.g。

def insertLocalDB():
    # Open a cursor to perform database operations
    cur = conn.cursor()
    cur.execute("INSERT INTO test_table (buildingID,datetime) VALUES(%s, now() )",
    ("01", ))
    # Make the changes to the database persistant
    conn.commit()
    # Close communication with the database
    cur.close()

now()将当前时间作为timestamp with time zone类型返回,并在第一个%s替换为 psycopg2 之后在服务器端运行(通过 libpq 01

另请注意,args的元组必须有一个逗号,因为它只有一个元素,否则它不会是一个真正的元组