我试图在我的表中插入整数值,但我遇到了“值错误”
import psycopg2
def connect():
con=psycopg2.connect("dbname='book_store' user='postgres' password='5283' host='localhost' port='5432' ")
cur=con.cursor()
cur.execute("CREATE TABLE if not exists books(id SERIAL PRIMARY KEY,title TEXT NOT NULL,author TEXT NOT NULL,year integer NOT NULL,isbn integer NOT NULL)")
con.commit()
con.close()
def insert(title,author,year,isbn):
con=psycopg2.connect("dbname='book_store' user='postgres' password='5283' host='localhost' port='5432'")
cur=con.cursor()
cur.execute("INSERT INTO books(title,author,year,isbn) VALUES(%s,%s,%d,%d)",(title,author,year,isbn))
con.commit()
con.close()
connect()
insert("the sun","helen",1997,23456777)
答案 0 :(得分:1)
来自Psycopg FAQ:
问:我无法将一个整数或一个浮点参数传递给我的查询:它说a 号码是必需的,但它是一个数字!
答:在查询字符串中,即使传递数字,也总是必须使用%s占位符。所有Python对象都由Psycopg转换 他们的SQL表示,因此它们作为字符串传递给查询。 请参阅将参数传递给SQL查询。
所以我想你只需要用%d
替换%s
。