【发布时间】:2021-07-06 08:48:02
【问题描述】:
第一个问题,我使用 Python 中的 psycopg2 库连接到一个数据库并执行此查询。
import psycopg2
conn = psycopg2.connect("dbname=**** user=**** password=**** host=**** port=****")
cur = conn.cursor()
cur.execute("SELECT datname, age(datfrozenxid), current_setting('autovacuum_freeze_max_age'), CURRENT_TIMESTAMP FROM pg_database ORDER BY 2 DESC;")
f = cur.fetchone()
print(f)
它返回这样的结果。
('db_name', 186336925, '200000000', datetime.datetime(2021, 7, 6, 15, 12, 46, 233934, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=420, name=None)))
我希望它返回带有时区的时间戳结果,就像我在 PostgreSQL 中查询一样。我该怎么办?
第二个问题,我想将上面定义为“f”变量的查询结果插入到我的本地主机数据库中
conn1 = psycopg2.connect("dbname=**** user=**** password=**** host=localhost port=5432")
with conn1:
cur1 = conn1.cursor()
cur1.execute("DROP TABLE IF EXISTS monitor")
cur1.execute("CREATE TABLE table(datname NAME, age XID, current_setting TEXT, datetime TIMESTAMP)")
query = "INSERT INTO table (datname, age, current_setting, datetime) VALUES (%s, %s, %s, %s)"
cur1.executemany(query, f)
conn1.commit()
但它会返回
TypeError: not all arguments converted during string formatting
我该如何解决?感谢您的帮助。
【问题讨论】:
-
INSERT INTO table (...-->>INSERT INTO monitor (...
标签: python postgresql psycopg2 timestamp-with-timezone