저는 학생 데이터 (이름과 클래스)를 한 번에 하나씩 테이블에 추가하는 python 스크립트를 작성했습니다. 테이블은 기본 키 열, 학생 이름 열 및 각 클래스의 열이 있도록 구조화되어 있습니다. 스크립트는 추가중인 클래스가 이미 열에 있는지 확인하고 그렇지 않으면 클래스를 만듭니다. 그런 다음 현재 학생의 해당 열 아래에 '사실'이라고 씁니다.일부 MySQL 쿼리가 적용되지 않습니다.
여기 내 문제가 있습니다. 로그 파일에서 모든 단일 쿼리가 데이터베이스로 올바르게 보내지 만 일부는 테이블에 표시되지 않는 것을 볼 수 있습니다. 다음 검색어를 실행할 때
CREATE TABLE Students (idStudents INT NOT NULL, Name VARCHAR(255) NOT NULL, PRIMARY KEY (idStudents)) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8
SET NAMES 'utf8'
INSERT INTO Students (idStudents, Name) VALUES ('1', 'Bror Tao Sjørslev Bojlen')
SELECT column_name FROM information_schema.columns WHERE table_name='Students'
ALTER TABLE Students ADD 3ubmSL5 VARCHAR(20)
UPDATE Students SET 3ubmSL5='true' WHERE idStudents='1'
ALTER TABLE Students ADD 3uchSL3 VARCHAR(20)
UPDATE Students SET 3uchSL3='true' WHERE idStudents='1'
ALTER TABLE Students ADD 3udaBH3 VARCHAR(20)
UPDATE Students SET 3udaBH3='true' WHERE idStudents='1'
ALTER TABLE Students ADD 3uenA1H1 VARCHAR(20)
UPDATE Students SET 3uenA1H1='true' WHERE idStudents='1'
ALTER TABLE Students ADD 3umaHL4 VARCHAR(20)
UPDATE Students SET 3umaHL4='true' WHERE idStudents='1'
ALTER TABLE Students ADD 3uphH2 VARCHAR(20)
UPDATE Students SET 3uphH2='true' WHERE idStudents='1'
ALTER TABLE Students ADD 3uth1 VARCHAR(20)
UPDATE Students SET 3uth1='true' WHERE idStudents='1'
표는 this입니다. 이다
,
UPDATE Students SET 3uth1='true' WHERE idStudents='1'
가 통과하지 않는 최종 쿼리.
나는 이것이 이치에 맞기를 바라고 누군가가이 문제에 관해 밝힐 수 있기를 바랬다. 그것이 나를 미치게했다.
각 학생 다음에 COMMIT 쿼리가 추가되어 문제가 해결되었습니다 - 감사합니다! 나는 테이블 구조에 대한 언급에 감사 드리며, 이것이 프로그래밍과 데이터베이스에 대한 첫 번째 진출이므로 비판이 도움이된다. 어쩌면 100 열을 가진 매우 작은 프로젝트이므로 확장성에 문제는 없습니다. 그러나 올바르게 수행하는 습관을 가지려면 더 나은 테이블 디자인을 찾아야합니다! –
학생들을위한 테이블, 수업을위한 테이블, 그리고 등록을위한 테이블을 시험해보십시오. 등록 테이블에는 StudentID 열 W ClassID 열만있을 수 있습니다. 학생 1이 클래스 3ubmSL5에 등록하면 INSERT INTO Enrollments (idStudent, idClass) VALUES (1, '3ubmSL5'); ' – mdoyle
이됩니다. 고맙습니다. 처음 엔 비슷한 것을 고려하고 있었지만 Enrollments 테이블이 같은 클래스의 학생들에게 각각의 클래스에 대해 행을 써야하기 때문에 반대했습니다. 한 학생이 여러 줄을 가지고있는 것이 이상하게 느껴지지만 합리적이라고 생각합니다. –