> When taking this approach, how do you ensure the accumulated schema
migrations end up with a database that matches the one that create_all
gives you?

Sadly, I don't.  I've actually been working on a test to ensure every table 
and column in the model exists in the database!

> Creating a database for every unit test feels like something that would
be slow enough to be annoying. How are you creating databases such that
it's fast enough for this not to be the case?

It depends on the project, context and test.  That's why we use env vars to 
control it.

Using a sql dump into postgres is pretty fast, but sqlite is not.
I have some tests that note which tables are required, and just build those 
tables.
Tests are designed to work on a populated existing database as well, so 
they don't need to be empty.
It's definitely not a one-size fits all concept for me.  I have some 
projects with under 20 tables, but some legacy applications with hundreds 
of tables.  

On Friday, September 2, 2022 at 2:47:05 AM UTC-4 Chris Withers wrote:

> On 01/09/2022 20:00, Jonathan Vanasco wrote:
> > 
> > > Create an empty schema from the models using create_all?
> > 
> > This is what I usually do with smaller projects. 
>
> When taking this approach, how do you ensure the accumulated schema 
> migrations end up with a database that matches the one that create_all 
> gives you?
>
> > When using unittest, some tests will use a fresh DB per test-run, others 
> > per-class, and others per-test. 
>
> Yeah, pytest fixture scoping gives a great way to set these up.
>
> > Sometimes the tests dictate that, other 
> > times I control that with env vars.  That gives us the flexibility to 
> > work on a small section and do efficient test runs during development.
>
> Creating a database for every unit test feels like something that would 
> be slow enough to be annoying. How are you creating databases such that 
> it's fast enough for this not to be the case?
>
> Chris
>

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/6fca8254-421d-4ad2-a7e3-24df42c6a7b6n%40googlegroups.com.

Reply via email to