Hi! I think the main problem here comes down to how Jupyter handles processes like a web server started from within a cell: when you run the command again, it looks like the previous process wasn't terminated, so it's still running on that port. This is why the other command won't start the web server – but it'll still run everything that happens before that, including the recipe code and adding the dataset to the database.
In general, you should be able to just stop the process running in that cell. Also see this thread