Best way to add data of multiple tables into mysql database from python

I am creating a windows GUI application using python and mysql. It is a student management system. I have written code to add student data into students table. What I would like to know is how to add data of parent and classroom tables from the code.

Database tables

students Table ID, roll_no, name, gender, dob  parents Table ID, student_id, first_name, last_name, address, email, contact_no  classrooms Table ID, student_id, name 

python code

from tkinter import * from tkinter import ttk import pymysql  class Student:     def __init__(self, root):         self.root = root         self.root.title('Student Management System')         self.root.geometry('1350x750+0+0')          title = Label(self.root, text='Student Management System', bd=10, relief=GROOVE, font=('times new roman', 40, 'bold'), bg='yellow', fg='red')         title.pack(side=TOP, fill=X)          #Variables         self.roll_no_var = StringVar()         self.name_var = StringVar()         self.gender_var = StringVar()         self.dob_var = StringVar()          #Frame to add data          Data_Frame = Frame(self.root, bd=4, relief=RIDGE, bg='crimson')         Data_Frame.place(x=20, y=100, width=450, height=580)          m_title = Label(Data_Frame, text='Manage Students', font=('times new roman', 30, 'bold'), bg='crimson', fg='white')         m_title.grid(row=0, columnspan=2, pady=20)          label_roll = Label(Data_Frame, text='Roll Number', font=('times new roman', 20, 'bold'), bg='crimson', fg='white')         label_roll.grid(row=1, column=0, pady=10, padx=20, sticky='w')          text_roll = Entry(Data_Frame, textvariable=self.roll_no_var, font=('times new roman', 15, 'bold'), bd=5, relief=GROOVE)         text_roll.grid(row=1, column=1, pady=10, padx=20, sticky='w')          label_name = Label(Data_Frame, text='Name', font=('times new roman', 20, 'bold'), bg='crimson', fg='white')         label_name.grid(row=2, column=0, pady=10, padx=20, sticky='w')          text_name = Entry(Data_Frame, textvariable=self.name_var, font=('times new roman', 15, 'bold'), bd=5, relief=GROOVE)         text_name.grid(row=2, column=1, pady=10, padx=20, sticky='w')          label_gender = Label(Data_Frame, text='Gender', font=('times new roman', 20, 'bold'), bg='crimson', fg='white')         label_gender.grid(row=4, column=0, pady=10, padx=20, sticky='w')          dropdown_gender = ttk.Combobox(Data_Frame, textvariable=self.gender_var, font=('times new roman', 13, 'bold'), state='readonly')         dropdown_gender['values'] = ('male', 'female', 'other')         dropdown_gender.grid(row=4, column=1, pady=10, padx=20)          label_dob = Label(Data_Frame, text='dob', font=('times new roman', 20, 'bold'), bg='crimson', fg='white')         label_dob.grid(row=6, column=0, pady=10, padx=20, sticky='w')          text_dob = Entry(Data_Frame, textvariable=self.dob_var, font=('times new roman', 15, 'bold'), bd=5, relief=GROOVE)         text_dob.grid(row=6, column=1, pady=10, padx=20, sticky='w')          #button frame         button_Frame = Frame(Data_Frame, bd=4, relief=RIDGE, bg='crimson')         button_Frame.place(x=15, y=515, width=420)          add_btn = Button(button_Frame, text='Add', width=10, command=self.add_student).grid(row=0, column=0, padx=10, pady=10)         update_btn = Button(button_Frame, text='Update', width=10).grid(row=0, column=1, padx=10, pady=10)         delete_btn = Button(button_Frame, text='Delete', width=10).grid(row=0, column=2, padx=10, pady=10)         clear_btn = Button(button_Frame, command=self.clear_data, text='Clear', width=10).grid(row=0, column=3, padx=10, pady=10)          #Display Frame         Display_Frame = Frame(self.root, bd=4, relief=RIDGE, bg='crimson')         Display_Frame.place(x=500, y=100, width=800, height=580)          label_search = Label(Display_Frame, text='Search By', font=('times new roman', 20, 'bold'), bg='crimson', fg='white')         label_search.grid(row=0, column=0, pady=10, padx=20, sticky='w')          dropdown_search = ttk.Combobox(Display_Frame, width=10, font=('times new roman', 13, 'bold'), state='readonly')         dropdown_search['values'] = ('Roll', 'Name', 'Contact')         dropdown_search.grid(row=0, column=1, pady=10, padx=20)          text_search = Entry(Display_Frame, font=('times new roman', 10, 'bold'), bd=5, relief=GROOVE)         text_search.grid(row=0, column=2, pady=10, padx=20, sticky='w')          search_btn = Button(Display_Frame, text='Search', width=10).grid(row=0, column=3, padx=10, pady=10)         show_btn = Button(Display_Frame, text='Show All', width=10).grid(row=0, column=4, padx=10, pady=10)          #Table Frame         Table_Frame = Frame(Display_Frame, bd=4, relief=RIDGE, bg='crimson')         Table_Frame.place(x=10, y=70, width=750, height=500)          scroll_x = Scrollbar(Table_Frame, orient=HORIZONTAL)         scroll_y = Scrollbar(Table_Frame, orient=VERTICAL)         self.Student_Table = ttk.Treeview(Table_Frame, columns=('roll', 'name', 'gender', 'dob'), xscrollcommand=scroll_x.set, yscrollcommand=scroll_y.set)         scroll_x.pack(side=BOTTOM, fill=X)         scroll_y.pack(side=RIGHT, fill=Y)         scroll_x.config(command=self.Student_Table.xview)         scroll_y.config(command=self.Student_Table.yview)         self.Student_Table.heading('roll', text='Roll No')         self.Student_Table.heading('name', text='Name')         self.Student_Table.heading('gender', text='Gender')         self.Student_Table.heading('dob', text='D O B')         self.Student_Table['show'] = 'headings'         self.Student_Table.column('roll', width=100)         self.Student_Table.column('name', width=100)         self.Student_Table.column('gender', width=100)         self.Student_Table.column('dob', width=100)         self.Student_Table.pack(fill=BOTH, expand=1)         self.fetch_student_data()      def add_student(self):         con = pymysql.connect(host='localhost', user='root', password='mastmacha123', database='student_management')         cur = con.cursor()         cur.execute('INSERT INTO students(roll_no, name, gender, dob) VALUES(%s, %s, %s, %s, %s, %s, %s)', (self.roll_no_var.get(), self.name_var.get(), self.gender_var.get(), self.dob_var.get()))         con.commit()         self.fetch_student_data()         self.clear_data()         con.close()      def fetch_student_data(self):         con = pymysql.connect(host='localhost', user='root', password='', database='student_management')         cur = con.cursor()         cur.execute('SELECT * FROM students')         rows = cur.fetchall()         if len(rows) > 0:             self.Student_Table.delete(*self.Student_Table.get_children())             for row in rows:                 self.Student_Table.insert('', END, values=row)             con.commit()         con.close()      def clear_data(self):         self.roll_no_var.set('')         self.name_var.set('')         self.gender_var.set('')         self.dob_var.set('')    root = Tk() ob = Student(root) root.mainloop() 

Here I would like to send data of parent and also classroom. The classrooms of students will be changed. It is many to many relationship. If I create new classes for parent and classroom how can I send the data of parent and classroom so that relationships of the models are maintained in the database?

Add Comment
0 Answer(s)

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.