用Python在MySQL中插入布尔值



我试图将一些值插入MySQL表,前2个值是字符串,最后一个是布尔值。我的问题是,无论我做什么,我似乎都无法使python/MySQL识别布尔值并插入它。据我所知,Python正确地使最后一个值为布尔值,但MySQL不这样认为。每次它在表中的默认值都是0。下面是一些伪代码,这就是我想要做的。

conn = MySQLdb.connect(...)
c = conn.cursor()
c.execute("INSERT INTO table (name, string, bool) VALUES (%s,%s,%s,(aName,aString,boolVal))

参见MySQL文档。"布尔"数据类型将只是0或1。

你看到的行为是预期的。

对于Python 2.7和MySQLdb包,它以这种方式为我工作。

  1. 对于varchar类型的列使用'%s'
  2. 对于布尔值,数字只使用%s, %d, %i
INSERT INTO table (string, bool) VALUES ('%s',%s) % ('string',True)`

如果值为True或False在python中可以使用int()

>>> a = True
>>> int(a)
1
>>>
conn = MySQLdb.connect(...)
c = conn.cursor()
c.execute("INSERT INTO table (bool) VALUES (%s)",( int(boolVal),))