Python中的一对多关系
嘿,我对Python数据库相当陌生,我想创建一个多对多的关系来获得使用它的感觉,但是我在方法中插入和删除时遇到了一些问题。我有一个学生表,它有学生id,学生id在前,学生id在后。我有一个class表,它有class_id、class_name和student_id。我可以报告学生姓名和他们注册的班级,但我似乎不知道如何添加班级和删除班级。下面是我的python代码。我有两个程序:数据库和主程序。 (我的主要发言): (我的数据库):Python中的一对多关系,python,sql,database,Python,Sql,Database,嘿,我对Python数据库相当陌生,我想创建一个多对多的关系来获得使用它的感觉,但是我在方法中插入和删除时遇到了一些问题。我有一个学生表,它有学生id,学生id在前,学生id在后。我有一个class表,它有class_id、class_name和student_id。我可以报告学生姓名和他们注册的班级,但我似乎不知道如何添加班级和删除班级。下面是我的python代码。我有两个程序:数据库和主程序。 (我的主要发言): (我的数据库): import pymysql from pro
import pymysql
from project1database import *
def dashes(size=80,char="-"):
print(char*size)
def nice_print(L):
dashes(30,".")
if len(L) == 0:
print("There are no classes for this student")
else:
for x in L:
print("++++>",x)
dashes(30,".")
db = database("project1")
done = False
dashes()
print("Enter student id to select a name and show classes. Blank terminates")
dashes()
while not done:
db.print_student()
index = input("id -> ")
if index.strip() =="":
done=True
else:
index = eval(index)
L=db.get_classes(index)
nice_print(L)
dashes()
print("all done")
dashes()
db.close()
import pymysql
import sys
class database:
con = ""
name = ""
dbname = ""
last = 0
def __init__(self,db_name): ## constructor
try:
self.con= pymysql.connect(host="localhost", user="root", passwd="", db=db_name)
except pymysql.Error as e:
print("Database Error [{:d}]: {:s}".format(e.args[0], e.args[1]))
sys.exit(0)
self.dbname = db_name
def close(self):
self.con.close()
def add(self,first,last):
query = "insert into student(student _first,student_last) values ('{:s}','{:s}')".format(first,last)
try:
cur = self.con.cursor()
cur.execute(query)
self.last = cur.lastrowid
self.con.commit()
except pymysql.Error as e:
print("Database Error [{:d}]: {:s}".format(e.args[0], e.args[1]))
sys.exit(0)
def delete(self,index):
query = "delete from student where student_id = {:d}".format(index)
cur = self.con.cursor()
cur.execute(query)
self.con.commit()
def print_student(self):
print("--- List of Student Names ---")
query = """
select student_id,student_first,student_last from student order by student_last
"""
cur = self.con.cursor()
cur.execute(query)
row = cur.fetchone()
while row is not None:
print("{:d}-> {:s}, {:s}".format(row[0],row[2],row[1]))
row = cur.fetchone()
def last_id(self):
return self.last
def get_classes(self,index):
query = """
select class_name from class where student_id = ?
"""
query = query.replace("?",str(index))
cur = self.con.cursor()
cur.execute(query)
row = cur.fetchone()
student_L=[]
while row is not None:
student_L.append(row[0])
row = cur.fetchone()
return student_L