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

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,))