我在MySQL中有一个Bank表,其中包含以下模式:
`User_id` int(11) NOT NULL AUTO_INCREMENT,
`Amount` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`User_id`)
我正在尝试将Amount作为输入并使用Python在表中输入记录。我运行以下代码:
print " enter the bank amount"
Amount = raw_input()
cursor.execute('''INSERT into Bank (Amount)
values (%d)''',
(Amount))
cursor.execute('commit')
但是,它显示以下错误:
Traceback (most recent call last):
File "create_user.py", line 23, in <module>
(Amount))
File "/usr/local/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 187, in execute
query = query % tuple([db.literal(item) for item in args])
TypeError: %d format: a number is required, not str
答案 0 :(得分:2)
raw_input()
返回一个字符串:
如果存在prompt参数,则将其写入标准输出 没有尾随换行符。然后该函数从输入中读取一行, 将其转换为字符串(剥离尾随换行符),然后返回 这一点。
>>> test = raw_input()
1
>>> test
'1'
>>> type(test)
<type 'str'>
您需要将其转换为int
(根据Amount
列类型):
amount = int(raw_input()) # TODO: handle exceptions?
cursor = db.cursor()
cursor.execute("""
INSERT INTO
Bank (Amount)
VALUES
(%d)
""", (amount, ))
db.commit()