Below is the list of tables from the database along with their columns and datatype. Need to generate an accurate SQL query for the question.
Only use the columns present in the respective table. Only use the columns which are required to generate the SQL query. Only use table joins if required and not otherwise.

### Tables ###
TABLE: CREATE TABLE Has_allergy ( fname VARCHAR, sex VARCHAR, StuID VARCHAR, Allergy VARCHAR )
TABLE: CREATE TABLE Student ( fname VARCHAR, sex VARCHAR, StuID VARCHAR, Allergy VARCHAR )

### Question ###
Find the first name and gender of the student who has allergy to milk but not cat.

### Accurate SQL ###

SELECT fname, sex FROM Student WHERE StuID IN (SELECT StuID FROM Has_allergy WHERE Allergy = "Milk" EXCEPT SELECT StuID FROM Has_allergy WHERE Allergy = "Cat")