Another workaround would be …

df = pd.read_sql_query(select(User.id, User.name), engine)
print(df)
"""
  id  name
0  1  Gord
1  2   Bob
"""

… although it does produce a couple of RemovedIn20Warning messages (that 
will probably be resolved once pandas does SQLA 1.4 better).


On Wednesday, September 1, 2021 at 3:29:59 AM UTC-6 thequie...@gmail.com 
wrote:

> Just for completeness I'm linking to source code to reproduce the problem:
> play/sqlalchemy-and-pandas at main · metaperl/play (github.com) 
> <https://github.com/metaperl/play/tree/main/sqlalchemy-and-pandas>
>
> Looks like the 1.4 release of pandas will remedy this problem.
>
>
> On Wednesday, September 1, 2021 at 3:07:39 AM UTC-4 cfede...@gmail.com 
> wrote:
>
>> Hi,
>>
>> This is a pandas bug, not an sqlalchemy ones. It was already reported 
>> here https://github.com/pandas-dev/pandas/issues/40682
>>
>> On Tuesday, 31 August 2021 at 23:15:04 UTC+2 Gord Thompson wrote:
>>
>>> *With version 1.3:*
>>>
>>> Base = declarative_base()
>>>
>>>
>>> class User(Base):
>>> __tablename__ = "user"
>>> id = Column(Integer, primary_key=True)
>>> name = Column(String)
>>>
>>>
>>> Base.metadata.create_all(engine)
>>>
>>> print(pd.__version__) # 1.3.2
>>> print(sa.__version__) # 1.3.24
>>>
>>> session = Session(engine)
>>> session.add_all([User(name="Gord"),User(name="Bob"),])
>>> session.commit()
>>> result_set = session.query(User.id, User.name)
>>> df = pd.DataFrame(result_set)
>>> print(df)
>>> """
>>> id name
>>> 0 1 Gord
>>> 1 2 Bob
>>> """
>>>
>>> *With version 1.4:*
>>>
>>> print(pd.__version__) # 1.3.2
>>> print(sa.__version__) *# 1.4.23*
>>>
>>> session = Session(engine)
>>> session.add_all([User(name="Gord"),User(name="Bob"),])
>>> session.commit()
>>> result_set = session.query(User.id, User.name)
>>> df = pd.DataFrame(result_set)
>>> print(df)
>>> """
>>> 0 1
>>> 0 1 Gord
>>> 1 2 Bob
>>> """
>>>
>>> On Tuesday, August 31, 2021 at 2:38:18 PM UTC-6 Mike Bayer wrote:
>>>
>>>>
>>>>
>>>> On Tue, Aug 31, 2021, at 3:10 PM, Terrence-Monroe: Brannon wrote:
>>>>
>>>>
>>>> Creating a pandas dataframe that contained descriptive column names 
>>>> formerly was as easy as:
>>>>
>>>> result_set = session.query(cls.column_1)
>>>> df = pandas.Dataframe(result_set)
>>>> print df.column_1
>>>>
>>>> but while this works in 1.3.20, in later versions of SA such as 
>>>> 1.4.19,  there is not enough column info supplied by SA to form the same 
>>>> symbolic column names. Thus, the above code would fail when attempting to 
>>>> access df.column_1 in SA 1.4.19 but not fail in SA 1.3.20.
>>>>
>>>>
>>>>
>>>> not familiar with this change, nothing should have changed with how 
>>>> session.query() returns rows and this may be some incompatibility with 
>>>> pandas.  Upgrade to the latest Pandas and make sure the behavior remains, 
>>>> then please provide an MCVE, thanks
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Anyway to supply a flag to query() to provide the extra column that 
>>>> existed in older SA versions?
>>>>
>>>>
>>>> -- 
>>>> 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+...@googlegroups.com.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/sqlalchemy/2664002d-25cc-450d-bc51-8652a7df3d53n%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/sqlalchemy/2664002d-25cc-450d-bc51-8652a7df3d53n%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/07354ac2-9e1c-4460-a3f9-3d376a99ea03n%40googlegroups.com.

Reply via email to