我在将动态变量传递到查询时遇到了一些麻烦。请忽略糟糕的风格。这就是我想要运行的:
> sql = "SELECT COUNT(*) FROM artifacts WHERE " \
> "url = '%s' AND " \
> "source_id = '%s'"
> self.db.execute(sql, (url, source_id))
我收到错误:
self.db.execute(sql)
AttributeError: execute
对于我的生活,我无法弄清楚为什么它会抛出一个属性错误。在“用户指南”中,该示例明确传入了正确的属性。
我一直关注:http://mysql-python.sourceforge.net/MySQLdb.html
咬嘴唇 eug。
答案 0 :(得分:3)
只是为了澄清你的self.db属性是连接还是游标。因为你只能调用游标上的执行!
如果您关注this example,那么您可以看到从连接属性创建游标,并且此游标包含execute方法。
这是一个小例子:
import MySQLdb
## This is the connection to the database
self.db = MySQLdb.connect(host=self.host, port=self.port, user=self.user, passwd=self.passwd, db=self.dbname)
## To query you need a cursor, this is created here
c = self.db.cursor()
## On the cursor you can execute a sql stamement and look at result
rows = c.execute('select count(*) from test_table')
## To look at the result use a fetch method, here there is only one result so:
print rows.fetchone()