私は、生徒データ(名前とクラス)を1つずつテーブルに追加する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行の非常に小さなプロジェクトなのでスケーラビリティは問題ではありませんが、適切な習慣を身に付けるために、より良いテーブルデザインを見つけるでしょう! –
学生のためのテーブル、クラスのテーブル、そして登録のためのテーブルを試してみてください。 enrollmentsテーブルには、StudentID列とClassID列のみが含まれている場合があります。 Student 1がクラス3ubmSL5に登録すると、INSERT INTO Enrollments(idStudent、idClass)VALUES(1、 '3ubmSL5'); ' – mdoyle
になります。ありがとうございます。最初は似たようなものを検討していましたが、Enrollmentsテーブルでは同じクラスの学生がそれぞれのクラスに1つの行を持つことになります。一人の生徒が複数の行を持つのは奇妙だと感じますが、合理的に聞こえます。 –