python - 'str'对象没有属性'execute'

Wiz*_*ard 4 python sqlite

第一次python用户在这里,温柔.... ;-)

OSX上的Python 2.6

有一个类只有一些围绕sqlite包装...这里是

from pysqlite2 import dbapi2 as sqlite

class SqliteDB:
    connection = ''
    curser = ''

    def connect(self):
        try:
            self.connection = sqlite.connect("pagespeed.sqlite")
            self.curser = self.connection.cursor()
         except sqlite.Error, e:
            print "Ooops: ", e.args[0]

    def find_or_create(self, table, column, value):
        self.curser.execute("SELECT id FROM ? WHERE ?=? LIMIT 1", (table, column, value))
        records = self.curser.fetchall()
        if records.count() == false:
            self.curser.execute("INSERT into ? SET ?=?", (table, column, value))
            self.curser.execute("SELECT id FROM ? WHERE ?=? LIMIT 1", (table, column, value))
        print records
Run Code Online (Sandbox Code Playgroud)

我在一个单独的文件中这样称呼它

import sqlitedb

def main():
    db = sqlitedb.SqliteDB()
    db.connect    
    url_id = db.find_or_create('urls', 'url', 'http://www.example.com')
Run Code Online (Sandbox Code Playgroud)

但是我得到这个错误,

Traceback (most recent call last):

  File "update_urls.py", line 17, in <module>

  main()

  File "update_urls.py", line 11, in main

  url_id = db.find_or_create('urls', 'url', 'http://www.example.com')

  File "....../sqlitedb.py", line 16, in find_or_create

  self.curser.execute("SELECT id FROM ? WHERE ?=? LIMIT 1", (table, column, value))

AttributeError: 'str' object has no attribute 'execute'
Run Code Online (Sandbox Code Playgroud)

所以它几乎就像self.curser没有得到一个诅咒,或者自我不正确?

不确定我在做什么就在这里......

干杯

ext*_*eon 7

我不知道出了什么问题,但至少:

db.connect  
Run Code Online (Sandbox Code Playgroud)

应该

db.connect()
Run Code Online (Sandbox Code Playgroud)

例如调用函数.

好.S.Lott有答案,我刚发现另一个bug :)

  • 不......你发现了这个错误,S.Lott发现了一个挑剔.通过他的修正,OP将获得相同的错误,但使用`NoneType`而不是`str`. (3认同)