第一个问题,我使用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)
It returns result like this.
('db_name', 186336925, '200000000', datetime.datetime(2021, 7, 6, 15, 12, 46, 233934, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=420, name=None)))
我希望它能像我在PostgreSQL中查询一样,返回带有时区的时间戳结果。我怎样才能做到呢?
第二个问题,我想把上面的查询结果插入我定义的'f'变量到我的localhost数据库。
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()
But it returns
TypeError: not all arguments converted during string formatting
我怎样才能修复它?谢谢你的帮助。