【发布时间】:2018-12-25 21:41:40
【问题描述】:
我正在尝试以下 python 代码:
import sqlite3
class database:
def __init__(self):
self.conn = sqlite3.connect("warehousedb.db")
self.cursor = self.conn.cursor()
self.cursor.execute(
"CREATE TABLE IF NOT EXISTS `admin` (admin_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, username TEXT, password TEXT)")
self.cursor.execute(
"CREATE TABLE IF NOT EXISTS `product` (product_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, product_name TEXT, product_qty TEXT, product_price TEXT)")
self.cursor.execute("SELECT * FROM `admin` WHERE `username` = 'admin' AND `password` = 'admin'")
if self.cursor.fetchone() is None:
self.cursor.execute("INSERT INTO `admin` (username, password) VALUES('admin', 'admin')")
self.conn.commit()
def __del__(self):
self.cursor.close()
self.conn.close()
def Execute_SQL(self, sql):
self.cursor.execute(sql)
self.conn.commit()
def Get_SQL(self, sql):
self.cursor.execute(sql)
return self.cursor.fetchall()
def Get_SQL_One_Rec(self, sql):
self.cursor.execute(sql)
return self.cursor.fetchone()
然后在尝试这段代码时:
db = database()
st = "SELECT * FROM `admin` WHERE `username` = '" + USERNAME.get() + "' AND `password` = '" + PASSWORD.get() + "'"
rec = db.Get_SQL_One_Rec(st)
我收到以下错误:
rec = db.Get_SQL_One_Rec(st) TypeError:Get_SQL_One_Rec() 缺少 1 个必需的位置参数:'sql'
【问题讨论】:
-
你事先实例化了
database类吗? -
你没有使用类吗?班级。实例只传递给类的实例,而不传递给类本身
-
不要在名称上使用双下划线。这不是您要使用的约定;使用 single 下划线来暗示某些东西应该是私有的。双下划线调用名称修改,只是一团糟。在 Python 中不能有真正的私有变量。
-
那个链接是完全错误的。 Python 没有私有的,只有一个约定,即不属于公共 API 的属性以 单下划线为前缀,双下划线用于 name-mangling,以防止子类中的冲突,它不是私有的。无论如何,你的
global声明没有做任何事情 -
请听听有经验的 Python 程序员告诉你什么。 Python确实没有有私有变量,
global这一行是无稽之谈,应该删除。
标签: python sqlite class oop object