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

Inserting datetime into database using pyscopg2 and PostgreSQL

我在使用带有pyscopg2的insert语句将datetime戳插入sql数据库时遇到了麻烦。

下面的代码所做的是,每当按下按钮时,它应该向数据库中插入一行,其中包含buildingID(即文本)和按下按钮的日期和时间。

我就是想不出如何插入当前的日期和时间。

1
2
3
4
5
6
7
8
9
10
# Inserts data into local database
def insertLocalDB():
    # Open a cursor to perform database operations
    cur = conn.cursor()
    cur.execute("INSERT INTO test_table (buildingID,datetime) VALUES(%s,%s)",
    ("01", datetime))  #HAS TO BE CURRENT DATE AND TIME
    # Make the changes to the database persistant
    conn.commit()
    # Close communication with the database
    cur.close()

当然你可以通过psycopg2 Python datetime插入一行,您需要创建一个datetime对象设置为当前时间,可以做这样的或通过模块如《——既然你想当前时间,我就会离开,Postgres本身。

如。

1
2
3
4
5
6
7
8
9
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类型返回当前时间,当第一个%s01替换为psycopg2(通过libpq)后将在服务器端运行。

还要注意,args的元组后面必须有逗号,因为它只有一个元素,否则就不是实际的元组。