TypeError: 'str' object is not callable (mysql-python)
TypeError: 'str' object is not callable (mysql-python)
我正在用 mysql-python 编码。
要将新记录添加到数据库中,我使用以下代码:
# Open database connection
db = MySQLdb.connect("localhost","root","admin","majoranalysis" )
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "INSERT INTO
# insert a record
jobdetail(title,date_accessed,description,requirement,url) \
VALUES(%(title)s,%(data_accessed)s,%(description)s,%(requirement)s,%(url)s)"
dt = ('data analysist',date(2015,4,16),'description','requirement',joblistlink[0])
cursor.execute(sql,dt)
问题是没有声明str
,但可能出现错误:
Traceback (most recent call last):
File "./re-ex.py", line 81, in <module>
dt = ('data analysist',date(2015,4,16),'description','requirement',joblistlink[0])
TypeError: 'str' object is not callable
创建 table 的 sql 命令是:
CREATE TABLE IF NOT EXISTS `jobdetail` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(225) COLLATE utf8_unicode_ci NOT NULL,
`date_accessed` date NOT NULL,
`description` text COLLATE utf8_unicode_ci NOT NULL,
`requirement` text COLLATE utf8_unicode_ci NOT NULL,
`url` varchar(225) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
你知道bug在哪里吗?
因为您在 sql str.So 中使用 %(key)s
作为占位符,这意味着您应该使用 dictionary
将数据提供给 sql.
例如
将元组提供给 %s
,例如:print "%s:%s" % ('key', 'val')
给 %(key)s
像 print '%(k1)s:%(v1)s' % {'k1':'key', 'v1':'val'}
如果您仍然不知道如何将 problem.Change 改成
dt={'title':'data analysist',
'data_accessed':date(2015,4,16),
'description':'description',
'requirement':'requirement',
'url':joblistlink[0]}
我正在用 mysql-python 编码。
要将新记录添加到数据库中,我使用以下代码:
# Open database connection
db = MySQLdb.connect("localhost","root","admin","majoranalysis" )
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "INSERT INTO
# insert a record
jobdetail(title,date_accessed,description,requirement,url) \
VALUES(%(title)s,%(data_accessed)s,%(description)s,%(requirement)s,%(url)s)"
dt = ('data analysist',date(2015,4,16),'description','requirement',joblistlink[0])
cursor.execute(sql,dt)
问题是没有声明str
,但可能出现错误:
Traceback (most recent call last):
File "./re-ex.py", line 81, in <module>
dt = ('data analysist',date(2015,4,16),'description','requirement',joblistlink[0])
TypeError: 'str' object is not callable
创建 table 的 sql 命令是:
CREATE TABLE IF NOT EXISTS `jobdetail` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(225) COLLATE utf8_unicode_ci NOT NULL,
`date_accessed` date NOT NULL,
`description` text COLLATE utf8_unicode_ci NOT NULL,
`requirement` text COLLATE utf8_unicode_ci NOT NULL,
`url` varchar(225) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
你知道bug在哪里吗?
因为您在 sql str.So 中使用 %(key)s
作为占位符,这意味着您应该使用 dictionary
将数据提供给 sql.
例如
将元组提供给 %s
,例如:print "%s:%s" % ('key', 'val')
给 %(key)s
像 print '%(k1)s:%(v1)s' % {'k1':'key', 'v1':'val'}
如果您仍然不知道如何将 problem.Change 改成
dt={'title':'data analysist',
'data_accessed':date(2015,4,16),
'description':'description',
'requirement':'requirement',
'url':joblistlink[0]}