class BaseDB:
'''
BaseDB
dbcur should be overwirte
'''
__tablename__ = None
placeholder = '%s'
maxlimit = -1
@staticmethod
def escape(string):
return '`%s`' % string
@property
def dbcur(self):
raise NotImplementedError
escape函数是干什么的,看起来像是返回一段字符串
dbcur怎么用来调用的呢,上面说dbcur应该重写,在子类中重写吗,然后怎么调用啊
pyspider代码
https://github.com/binux/pysp...
PHP中文网2017-04-18 10:28:38
escape
是為string加上``符號。例如你創建的table或column裡有空白字元時。
create table `hello world tb` (`column name1` INT NOT NULL AUTO_INCREMENT PRIMARY KEY)
錯誤的查詢:select column name1 from hello world tb
正确的查询:select
`column name1
` from
`hello world tb
`
dbcur
這個函數拋出未實現這個異常,目的是為了充當接口,由子類去實現。 Python裡面沒有介面這個概念,所以定義介面時,可以採用這種方式。 DbBase只付責建構sql語句,具體使用何種資料庫由子類別實作,好處是可以適配不同的資料庫。
源碼:
if __name__ == "__main__":
import sqlite3
class DB(BaseDB):
__tablename__ = "test"
placeholder = "?"
def __init__(self):
self.conn = sqlite3.connect(":memory:")
cursor = self.conn.cursor()
cursor.execute(
'''CREATE TABLE `%s` (id INTEGER PRIMARY KEY AUTOINCREMENT, name, age)'''
% self.__tablename__
)
@property
def dbcur(self):
return self.conn.cursor()