使用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 表
使用PostgreSQL插件pg_pathman对超大表分表的实践
PostgreSQL连接python,postgresql在python 连接,创建表,创建表内容,插入操作,选择操作,更新操作,删除操作。