I use SQLAlchemy with MySQL. In one application, I need to obtain the 
server-generated primary key values of newly inserted rows by obtaining the 
value of the first inserted row with the property inserted_primary_key. 
However, after upgrading to version 1.4.15, this property return only 
(None,). 

See the following trivial example:

from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, Text, MetaData, Table

​engine = 
create_engine('mysql+pymysql://testuser:xyz6789@localhost/testdb?charset=utf8')


metadata = MetaData()
messages = Table(
    'messages', metadata,
    Column('id', Integer, primary_key=True),
    Column('message', Text),
)

# on first run:
# messages.create(bind=engine)

​
values = [
    {'message': 'Hello World'},
    {'message': 'Hallo Welt'},         
         ]

with engine.begin() as conn:
    result = conn.execute(messages.insert().values(values))
    first_id = result.inserted_primary_key[0]

    
print(f'first_id = {first_id}')


Result in SQLAlchemy-1.3.15:

first_id = 1


But in SQLAlchemy-1.4.15:

first_id = None

Converting to new-style querying does not help. The new property 
inserted_primary_key_rows returns just nested tuples of None whenever more 
than one row is inserted. This is metioned in the documentation for 
backends that do not support returned primary keys -- but MySQL obviously 
does!

Any help highly appreciated. Right now I cannot think of any other solution 
than sticking with 1.3.

-- 
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/dd6eb61d-da0a-48d0-88d7-ef0e3ba437d8n%40googlegroups.com.

Reply via email to