Heim > Fragen und Antworten > Hauptteil
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()