Я создаю базу данных, которая включает в себя 3 основные таблицы:
Пользователи, Назначения, Группы
С другими потенциальными таблицами, которые относятся к таблице «Группы».Эти потенциальные таблицы должны быть таблицами, имена которых основаны на ключевой переменной в таблице «Группы».например, если в таблице групп есть запись с groupName = "Group_One", я хочу создать таблицу с именем "Group_One", а затем сохранить имена пользователей в этой таблице.Так как не вижу практического способа хранить несколько имен пользователей в одной строке таблицы «Группы».
Вот код, который я тестирую, чтобы попытаться реализовать это:
import sqlite3
def Database_Setup():
Cur.executescript(
"""
CREATE TABLE IF NOT EXISTS USERS
(
username text,
password text,
clearance int,
classes int
);
CREATE TABLE IF NOT EXISTS GROUPS
(
groupName text
teacher text,
teachingAssistant text
users
);
CREATE TABLE IF NOT EXISTS ASSIGNMENTS
(
assignmentID int,
assignmentName text,
assignmentInfo text,
dueDate date,
setDate date,
completedAmount int
)
"""
)
def Potential_Solution():
Group_Name = "Group1"
List_Of_Users = ["User1","User2","User3"]
Cur.execute("""
CREATE TABLE IF NOT EXISTS {}
(
username text,
randomVar text
)
""".format(Group_Name))
# This part works fine ^^
for User in List_Of_Users:
Cur.execute("INSERT INTO TABLE ? values (?,'Some_Var')",(Group_Name,User))
def Main():
Database_Setup()
Potential_Solution()
Cur.execute("SELECT * FROM Group1")
print(Cur.fetchall())
if __name__ == "__main__":
Conn = sqlite3.connect("FOO_DB.db")
Cur = Conn.cursor()
Main()
Однако когда я выполняю это, я сталкиваюсь с этой ошибкой:
Traceback (most recent call last):
File "E:/Python/Py_Proj/DB LIST vs new db example.py", line 53, in <module>
Main()
File "E:/Python/Py_Proj/DB LIST vs new db example.py", line 46, in Main
Potential_Solution()
File "E:/Python/Py_Proj/DB LIST vs new db example.py", line 42, in Potential_Solution
Cur.execute("INSERT INTO TABLE ? values (?,Some_Var)",(Group_Name,User))
sqlite3.OperationalError: near "TABLE": syntax error
Есть ли практический способ сделать то, что я пытаюсь достичь?Или я должен прибегнуть к другому методу?