Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的一对多关系_Python_Sql_Database - Fatal编程技术网

Python中的一对多关系

Python中的一对多关系,python,sql,database,Python,Sql,Database,嘿,我对Python数据库相当陌生,我想创建一个多对多的关系来获得使用它的感觉,但是我在方法中插入和删除时遇到了一些问题。我有一个学生表,它有学生id,学生id在前,学生id在后。我有一个class表,它有class_id、class_name和student_id。我可以报告学生姓名和他们注册的班级,但我似乎不知道如何添加班级和删除班级。下面是我的python代码。我有两个程序:数据库和主程序。 (我的主要发言): (我的数据库): import pymysql from pro

嘿,我对Python数据库相当陌生,我想创建一个多对多的关系来获得使用它的感觉,但是我在方法中插入和删除时遇到了一些问题。我有一个学生表,它有学生id,学生id在前,学生id在后。我有一个class表,它有class_id、class_name和student_id。我可以报告学生姓名和他们注册的班级,但我似乎不知道如何添加班级和删除班级。下面是我的python代码。我有两个程序:数据库和主程序。 (我的主要发言):

(我的数据库):

   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