使用python将单个变量插入PostgreSQL中的表

Posted

技术标签:

【中文标题】使用python将单个变量插入PostgreSQL中的表【英文标题】:Insert a single variable into a table in PostgreSQL using python 【发布时间】:2017-09-17 09:32:15 【问题描述】:

我正在尝试将单个值插入到具有两列的 Postgres 表中。第一列是一个自动递增的主键,而第二列应该是一个变量。我做了一些研究,发现了以下资源TypeError: not all arguments converted during string formatting python,How to set auto increment primary key in PostgreSQL? 这个Psycopg2 string formatting with variable names for type creation。

import psycopg2

try:
    conn = psycopg2.connect("dbname=postgres user=postgres password=actuarial")
    print("database created successfully.")
except psycopg2.OperationalError as ex:
    print("Connection failed: 0".format(ex))
cur = conn.cursor()

def create_client_table():
    cur.execute("CREATE TABLE ClientTable (ClientID SERIAL PRIMARY KEY, Name varchar);")
    print('student table created successfully')

create_client_table()

def client_add():
    name = input("Enter the names of the student:")
    cur.execute("INSERT INTO CleintTable VALUES (%s)", (name));
    cur.execute("SELECT * FROM StudentTable")
    rows = cur.fetchall()
    print(rows)
client_add()

conn.close()

运行上面的代码时,我收到以下错误。请帮我确定我哪里出错了。

cur.execute("INSERT INTO CleintTable VALUES (%s)", (name));

TypeError: not all arguments converted during string formatting

【问题讨论】:

【参考方案1】:

“CleintTable”可能需要更改为 ClientTable,除非您有意以这种方式命名该表。只是我在阅读您的代码时注意到的,除了您要查找的内容。

【讨论】:

【参考方案2】:

name 后面需要一个逗号来将括号内的表达式转换为元组:

cur.execute("INSERT INTO CleintTable VALUES (%s)", (name,));

否则它是一个字符串序列,execute 方法将对其进行迭代。

【讨论】:

以上是关于使用python将单个变量插入PostgreSQL中的表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 将 NULL 值插入 PostgreSQL 数据库?

使用 SQLAlchemy 从 PostgreSQL 行对象中获取单个值

如何使用 Pscycopg2 将字典插入 Postgresql 表

Excel VBA将数组变量插入到访问中的单个字段中

使用PostgreSQL插件pg_pathman对超大表分表的实践

PostgreSQL连接python,postgresql在python 连接,创建表,创建表内容,插入操作,选择操作,更新操作,删除操作。