在数据库中存储数据(Postgres)

2024-03-28 23:45:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我昨天问了一个关于元组的问题: adding the same variable to a list of tuples

@alecxe完美地回答了这个问题,但现在的问题是(PostgreSQL),当我试图在postgres中存储数据时,我收到了以下错误:

TypeError: not all arguments converted during string formatting

我尝试的是:

country = (countries[i], )
user_info = [tuple((t,)) + country for t in zip(name, age, city)]
query = "INSERT INTO users_info (name, age, city, country) VALUES %s"
cur.executemany(query, user_info)
con.commit()

然后我收到了错误,我也尝试了以下方法:

user_info = [tuple((t,)) + country for t in zip(name, age, city, country)]

又犯了同样的错误,然后我尝试了别的方法:

user_info = [tuple((t,)) for t in zip(name, age, city, country)]

我答对了,但是有一个问题(最后一列country)将所有国家存储为unique,即使在创建数据库时我没有将列指定为unique:

数据库结果:

name | age |  city | country                  
-----+-----+-------+---------------
a    |  1  |  aaa  | United States
d    |  4  |  ddd  | UK
e    |  5  |  eee  | Canada

正在创建数据库:

cur.execute("CREATE TABLE IF NOT EXISTS users_info (name VARCHAR(255) NOT NULL, age INT, city VARCHAR(255), country TEXT NOT NULL)")

我希望所有的用户都出现,即使他们来自同一个国家。。你知道吗


Tags: nameininfo数据库cityforage错误
1条回答
网友
1楼 · 发布于 2024-03-28 23:45:37

表中有四个字段,因此SQL语句中需要四个占位符:

country = (countries[i], )
user_info = [t + country for t in zip(name, age, city)]
query = "INSERT INTO users_info (name, age, city, country) VALUES (%s, %s, %s, %s)"
cur.executemany(query, user_info)
con.commit()

相关问题 更多 >