如何通过Python将 current_timestamp 插入 Postgres?
对于处理时间戳,PostgreSQL 支持两种数据类型 timestamp 和 timestamptz。 timestamp 数据类型帮助我们创建没有时区的时间戳,timestamptz 帮助我们创建带时区的时间戳。可以使用时间戳数据类型存储日期和时间。但是,它不包括时区信息。这意味着如果您更改数据库服务器的时区,保存在数据库中的时间戳值将不会自动更新,在这些情况下使用 timestamptz 数据类型。
示例 1:
下面的代码是数据类型的示例。 psycopg2.connect() 方法用于建立与数据库的连接。游标是使用 connection.cursor() 方法创建的。 execute() 方法执行给定的 sql 命令。创建了一个名为 timestamp_data 的表。格式化时间戳的字符串被插入到创建的表中。从表中获取值。在表中,我们可以看到 timestamp_timezone 列也显示了时区。
Python3
# import packages
import psycopg2
from datetime import datetime, timezone
# establish a connection
conn = psycopg2.connect(
database="TIMESTAMP_DATA", user='postgres', password='pass',
host='127.0.0.1', port='5432'
)
conn.autocommit = True
# creating a cursor
cursor = conn.cursor()
# creating a table
cursor.execute('''CREATE TABLE timestamp_data
(timestamp TIMESTAMP,timestamp_timezone TIMESTAMPTZ);''')
# inserting timestamp values
cursor.execute('''INSERT INTO timestamp_data VALUES
('2021-05-20 12:07:18-09','2021-05-20 12:07:18-09');''')
# fetching data
sql1 = '''select * from timestamp_data;'''
cursor.execute(sql1)
for i in cursor.fetchall():
print(i)
conn.commit()
# closing the connection
conn.close()
Python3
# import packages
import psycopg2
from datetime import datetime, timezone
# establish connection
conn = psycopg2.connect(
database="Banking", user='postgres', password='pass',
host='127.0.0.1', port='5432'
)
# autocommit is set to True
conn.autocommit = True
# creating a cursor
cursor = conn.cursor()
# creating a table
cursor.execute(
'create table bank_records(amount_deposited decimal , Date timestamptz);')
deposit_amount = 4565.89
dt = datetime.now(timezone.utc)
# inserting values
cursor.execute('insert into bank_records values(%s,%s)', (deposit_amount, dt,))
# fetching rows
sql1 = '''select * from bank_records;'''
cursor.execute(sql1)
for i in cursor.fetchall():
print(i)
conn.commit()
# closing the connection
conn.close()
输出:
示例 2:
在此示例中,导入了 psycopg2 和 DateTime 包。 psycopg2.connect() 方法用于建立与数据库的连接。游标是使用 connection.cursor() 方法创建的。 execute() 方法执行给定的 SQL 命令。值被插入到创建的表中。 datetime.now() 用于计算 current_timestamp,它被进一步插入到表中。 cursor.fetchall() 方法用于获取所有行。
Python3
# import packages
import psycopg2
from datetime import datetime, timezone
# establish connection
conn = psycopg2.connect(
database="Banking", user='postgres', password='pass',
host='127.0.0.1', port='5432'
)
# autocommit is set to True
conn.autocommit = True
# creating a cursor
cursor = conn.cursor()
# creating a table
cursor.execute(
'create table bank_records(amount_deposited decimal , Date timestamptz);')
deposit_amount = 4565.89
dt = datetime.now(timezone.utc)
# inserting values
cursor.execute('insert into bank_records values(%s,%s)', (deposit_amount, dt,))
# fetching rows
sql1 = '''select * from bank_records;'''
cursor.execute(sql1)
for i in cursor.fetchall():
print(i)
conn.commit()
# closing the connection
conn.close()
输出:
(Decimal(‘4565.89’), datetime.datetime(2022, 3, 6, 19, 2, 3, 669114,
tzinfo=datetime.timezone(datetime.timedelta(seconds=19800))))