因此,我有一个要连接的MySQL数据库,并且在特定表中有两行,其中之一是VARCHAR,另一行是INT。

这就是我使用Python进入数据库的方式:

player = seluse.get()
cnx = mysql.connector.connect(**config)
cursor = cnx.cursor()
sql = "SELECT * FROM db_PROMOTIONS WHERE player = '%s'" % (player)
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
    prank = row[1]


现在,现在没有问题,但是我想减少“ prank”变量,它在MySQL中是一个INT。
我这样做是:

prank = prank - 7


现在这对我来说是一个问题:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1536, in __call__
    return self.func(*args)
  File "C:/Python27/Scripts/data.py", line 201, in insert_new
    prank = prank - 7
TypeError: unsupported operand type(s) for -: 'unicode' and 'int'


有什么建议么?

最佳答案

您应该将恶作剧转换为int

for row in results:
    prank = int(row[1])


当您使用mysql.execute获取值时,所有返回字段均为字符串。
您可以使用SQLAlchemy来自动转换值,

关于python - Python/MySQL数学,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34480193/

10-13 02:02