On Wed, Aug 5, 2020, at 8:59 AM, Zsolt Ero wrote:
> Hi,
> 
> I've split a table into two tables, for performance reasons. I'd like to 
> insert into both tables using the same sequence. I'm inserting using 
> executemany_mode='values'.
> 
> My idea is to call nextval() on the sequence before insert and fill in the 
> values client side, before inserting.
> 
> select nextval('mysql') FROM generate_series(1,...)
> 
> Everything looks good, except for the default behaviour of SQLAlchemy to turn 
> an integer + pk column into a SERIAL. 

add autoincrement=False to the Column


> 
> As an alternative I'm also looking at using Sequence('myseq') from 
> https://docs.sqlalchemy.org/en/13/dialects/postgresql.html#sequences-serial-identity,
>  but this is broken for issuing "CREATE SEQUENCE myseq" before the table 
> creation, which is missing the IF NOT EXISTS part.

there's a "checkfirst" flag on Sequence.create() or Table.create() that will 
check for the object ahead of time, using a separate query.  To render "IF NOT 
EXISTS" then just invoke the SQL:  conn.execute(text("CREATE SEQ IF NOT EXISTS 
..."))



> 
> How can I either:
> - turn off the automatic behaviour of making a pg + int = serial?
> - add a IF NOT EXISTS to the Sequence()?
> 
> Or any alternative ideas?
> 

> --
> 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/7860f5ab-64a4-481d-8e72-9b40d2ab2527o%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy/7860f5ab-64a4-481d-8e72-9b40d2ab2527o%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 
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/74ad0d47-328f-4c3b-9afd-9425f72942f2%40www.fastmail.com.

Reply via email to