【发布时间】:2017-12-08 13:09:19
【问题描述】:
这个问题更多的是关于如何使用 OOP 读取数据库。 SQLite 和 sqlite3 只是可以使用的示例,并不是问题的主要内容。 (可以说Python在这里只是用来解释我的观点):
我正在创建一个软件包,它允许用户查询已经生成的 SQLite 索引文件。对于非常特殊的情况,查询以某种方式索引的 SQLite 文件基本上是一种语法,这应该很简单,但我有点困惑如何“自动”读取 SQLite
这是一个示例(带有伪代码):
import sqlite3
Class EasySQL:
def __init__(self, filepath):
self.filepath = filepath
def connect(self, filepath): ## perhaps this should be above in init?
return sqlite3.connect(self.filepath)
def query_indexA(self):
## query index A on SQLite3 connection
def query_indexB(self):
## query index B on SQLite3 connection
def query_indexC(self):
## query index C on SQLite3 connection
def query_indexD(self):
## query index D on SQLite3 connection
这是我的问题:用户只能访问两种类型的索引 SQLite 文件。 “Type 1”文件仅在 A 和 B 上建立索引——索引 C 和 D 在此 SQLite 文件中不存在,如果用户尝试调用这些函数,应该会抛出错误。 “类型 2”文件仅在 C 和 D 上建立索引——该 SQLite 文件中不存在索引 A 和 B,如果用户尝试调用这些函数,应该会抛出错误。
我如何“限制”这些方法,以便如果用户在“Type 1”SQLite 文件上调用(例如)query_indexC,就会出现错误?
我强烈不希望强迫用户使用两个单独的类,因为这太复杂了,例如EasySQL_Type1() 或 EasySQL_Type2() 一个标志,但哪种类型可以。
【问题讨论】:
-
你如何确定什么是“Type 1”和什么是“Type 2”文件?
-
@zwer 用户必须在输入文件时。或者,在上面的示例中,找到的“错误”查询必须以某种方式抛出错误,即“错误:没有 B 索引”
-
是的,但是如果你想根据类型抛出错误,你的班级需要知道哪个是哪个。这意味着用户需要告知您的班级所传递文件的类型,问题是 - 您如何想象这个过程?
-
@zwer 用户是生成“type1”sqlite 文件或“type2”sqlite 文件的用户。所以,如果他们记得,他们将是设置这个的人。但是,您是对的——可能存在人为错误。自动“检查”索引类型可能会更好