мои знания о приложениях, управляемых базой данных, и о базе данных ORM крошечные, я написал эту модель в peewee https://codereview.stackexchange.com/q/210293/22943
, и я хочу иметь возможность обновлять 3 таблицы Patient, Relative и PatientAttendOnVisit одновременновремя с внешним ключом Relative и PatientAttendOnVisit для идентификатора пациента в таблице Patient.
Я попытался сделать следующее:
def add_patient_visit(data=None):
"""
Adds new visit to clinic of patient
for new or follow up patient.
"""
if not data:
raise ValueError("Please pass the user info.")
try:
patient = _clinic.Patient.get(name=data["name"])
if patient:
print "Patient exists with same name."
response_object = {
"status": "fail",
"message": "Patient already in record."
}
return response_object, 400
except peewee.DoesNotExist as er:
patient = _clinic.Patient.create(
name=data["name"],
townCity=data["townCity"],
contactnumber=data["contactnumber"],
age=data["age"],
gender=data["gender"],
email=data["email"],
postalAddress=data["postalAddress"])
relative = _clinic.Relative.create(relation=data["relation"],
relativeName=data["relativeName"])
attendence = _clinic.PatientAttendOnVisit.create(
dateTimeofvisit=data["dateTimeofvisit"],
attendtype=data["attendtype"],
department=data["department"]
)
, но при попытке сделать это выдает ошибку ниже:
return файл controller.add_patient_visit (data = data) "/Users/ciasto/Development/python/clinic-backend/app/api/clinic/controller.py", строка 35, в add_patient_visitlativeName = data ["lativeName "]) Файл "/Users/ciasto/Development/python/clinic-backend/clinic_venv/lib/python2.7/site-packages/peewee.py", строка 5580, в файле create inst.save (force_insert = True) "/Пользователи / ciasto / Development / python / clinic-backend / clinic_venv / lib / python2.7 / site-packages / peewee.py ", строка 5727, в файле сохранения pk_from_cursor = self.insert (** field_dict) .execute () File"/ Users / ciasto / Разработка / Пытьhon / clinic-backend / clinic_venv / lib / python2.7 / site-packages / peewee.py ", строка 1622, во внутреннем методе возврата (self, база данных, * args, ** kwargs) Файл" / Users / ciasto / Development/python/clinic-backend/clinic_venv/lib/python2.7/site-packages/peewee.py ", строка 1693, в файле execute return self._execute (database) File" / Users / ciasto / Development / python / clinic-backend/clinic_venv/lib/python2.7/site-packages/peewee.py ", строка 2355, в _execute return super (Вставить, самостоятельно) ._ Выполнить (файл базы данных) Файл" / Users / ciasto / Разработка / python / clinic-backend /clinic_venv / lib / python2.7 / site-packages / peewee.py ", строка 2118, в _execute cursor = database.execute (self) File" / Users / ciasto / Разработка / python / clinic-backend / clinic_venv / lib / python2.7 / site-packages / peewee.py ", строка 2724, при выполнении вернуть файл self.execute_sql (sql, params, commit = commit) Файл" / Users / ciasto / Разработка / python / clinic-backend / clinic_venv / lib / python2.7 / site-packages / peewee.py ", строка 2718, в файле execute_sql self.commit ()" / Users / ciasto / Development / python / clinic-backend / clinic_venv / lib / python2.7 / site-packages / peewee.py ", строка 2509, в exit reraise (файл new_type, new_type (* exc_args), traceback)" / Users / ciasto/Development/python/clinic-backend/clinic_venv/lib/python2.7/site-packages/peewee.py ", строка 2711, в файле execute_sql cursor.execute (sql, params или ())" / Users / ciasto / Development/python/clinic-backend/clinic_venv/lib/python2.7/site-packages/MySQLdb/cursors.py ", строка 205, в файле execute self.errorhandler (self, exc, value) execute" / Users / ciasto / Development /python / clinic-backend / clinic_venv / lib / python2.7 / site-packages / MySQLdb / connections.py ", строка 36, в defaulterrorhandler поднимает errorclass, errorvalue IntegrityError: (1452, 'Невозможно добавить или обновить дочернюю строку: чужойключевое ограничение не выполнено (clinic_backend
. relative
, CONSTRAINT relative_ibfk_1
ИНОСТРАННЫЙ КЛЮЧ (patient_id
) ССЫЛКИ patient
(id
)) ')