You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.0 KiB
98 lines
3.0 KiB
|
|
|
|
class Database:
|
|
def __init__(self, db_connection):
|
|
self.db_connection = db_connection
|
|
|
|
def init(self):
|
|
cur = self.db_connection.cursor()
|
|
tables = [
|
|
("Account", '''
|
|
CREATE TABLE Account(
|
|
userID TEXT PRIMARY KEY,
|
|
passwordHash TEXT,
|
|
permission TEXT CHECK(permission IN ('Admin', 'User', 'Ban'))
|
|
)
|
|
'''),
|
|
|
|
("MainBook", '''
|
|
CREATE TABLE MainBook(
|
|
bookID TEXT PRIMARY KEY,
|
|
ISBN TEXT,
|
|
borrowStatus TEXT CHECK(borrowStatus IN ('borrowed', 'available'))
|
|
)
|
|
'''),
|
|
|
|
("BookLocation", '''
|
|
CREATE TABLE BookLocation(
|
|
bookID TEXT PRIMARY KEY,
|
|
location TEXT
|
|
)
|
|
'''),
|
|
|
|
("BorrowRecord", '''
|
|
CREATE TABLE BorrowRecord(
|
|
bookID TEXT,
|
|
borrowTime TEXT,
|
|
actualReturnTime TEXT,
|
|
expectedReturnTime TEXT,
|
|
borrowingUser TEXT
|
|
)
|
|
'''),
|
|
|
|
("BookInfo", '''
|
|
CREATE TABLE BookInfo(
|
|
ISBN TEXT PRIMARY KEY,
|
|
author TEXT,
|
|
summary TEXT,
|
|
price REAL,
|
|
publicationDate TEXT,
|
|
category TEXT
|
|
)
|
|
'''),
|
|
|
|
("BookCategory", '''
|
|
CREATE TABLE BookCategory(
|
|
category TEXT PRIMARY KEY
|
|
)
|
|
''')
|
|
]
|
|
|
|
# 创建表,只有当表不存在时才创建
|
|
for table_name, table_query in tables:
|
|
cur.execute(f"SELECT name FROM sqlite_master WHERE type='table' AND name='{table_name}'")
|
|
if not cur.fetchone():
|
|
cur.execute(table_query)
|
|
|
|
# 添加默认的图书类别
|
|
categories = [
|
|
'马克思主义、列宁主义、毛泽东思想、邓小平理论',
|
|
'哲学、宗教',
|
|
'社会科学总论',
|
|
'政治、法律',
|
|
'军事',
|
|
'经济',
|
|
'文化、科学、教育、体育',
|
|
'语言、文字',
|
|
'文学',
|
|
'艺术',
|
|
'历史、地理',
|
|
'自然科学总论',
|
|
'数理科学和化学',
|
|
'天文学、地球科学',
|
|
'生物科学',
|
|
'医学、卫生',
|
|
'农业科学',
|
|
'工业科学',
|
|
'交通运输',
|
|
'航空、航天',
|
|
'环境科学、劳动保护科学(安全科学)',
|
|
'综合性图书'
|
|
]
|
|
|
|
for category in categories:
|
|
cur.execute('SELECT * FROM BookCategory WHERE category="category"')
|
|
print(category)
|
|
if not cur.fetchone():
|
|
cur.execute('INSERT INTO BookCategory(category) VALUES(?)', (category,))
|