Re: [sqlalchemy] How to LOCK TABLE for PostgreSQL

2023-02-23 Thread Mike Bayer


On Thu, Feb 23, 2023, at 10:44 PM, jens.t...@gmail.com wrote:
> Hello,
> 
> In order to use the PostgreSQL LOCK 
>  with SQLAlchemy, is there 
> a better way than
> 
> *session.execute(sa.text(f"LOCK TABLE {Foo.__tablename__} IN SHARE MODE"))*

I would probably use session.connection().exec_driver_sql() for more 
succinctness.  

if you want to build a custom SQL construct you can check out @compiles at 
https://docs.sqlalchemy.org/en/20/core/compiler.html

> 
> 
> Also, do I need to *flush()* to push the LOCK to the db?

not at all, execute() as well as connection().execute(), 
connection().exec_driver_sql() push the given SQL right out, which you can see 
by adding echo=True to your create_engine().



> 
> Much thanks!
> Jens
> 
> 
> -- 
> 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/0cfe4a51-f013-4299-a584-9ddb643bc906n%40googlegroups.com
>  
> .

-- 
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/af027a75-109a-4eb5-abbe-20f7fe29cf9e%40app.fastmail.com.


Re: [sqlalchemy] Column vs InstrumentedAttribute

2023-02-23 Thread Mike Bayer
your "derive" argument would need to be opened up to accept ColumnElement.

if you are going for being fully typed like this you would do way better by 
targeting 2.0 instead of 1.4.  the typing in 1.4 is nor very good and also not 
compatible with that of 2.0.



On Thu, Feb 23, 2023, at 10:56 PM, Val Huber wrote:
> Yes, Mike, I agree -  definitely seeing correct runtime behavior.
> 
> Just looking to get past the somewhat scary alerts (which, btw, do not occur 
> in PyCharm).  Care and feeding of the IDE, I suppose…
> 
> Not super urgent, but would be good to clear up...
> 
>> On Feb 23, 2023, at 7:39 PM, Mike Bayer 
>>  wrote:
>> 
>> those are typing issues being reported by Pylance and do not affect the 
>> runtime behavior of the application.
>> 
>> Pylance refers to typing stubs for SQLAlchemy 1.4 which don't apply to 
>> SQLAlchemy 1.3.
>> 
>> 
>> 
>> On Thu, Feb 23, 2023, at 7:36 PM, Val Huber wrote:
>>> Hello, All
>>> 
>>> In SQLAlchemy 1.4.29, the I get the warnings shown in the attached screen 
>>> shot.  These are calls to LogicBank; if I alter LogicBank to use Column 
>>> instead of InstrumentedAttribute, it fails with 
>>> 
>>> AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' 
>>> object associated with Customer.Balance has an attribute 'descriptor'
>>> 
>>> I don't believe I got these warnings with SQLAlchemy 1.3.
>>> 
>>> Suggestions?
>>> 
>>> Thanks,
>>> Val
>>> 
>>> 
>>> 
>>> 
>>> -- 
>>> 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/18551662-845e-42d5-acb1-b0ec31140b8fn%40googlegroups.com
>>>  
>>> .
>>> 
>>> *Attachments:*
>>>  • Column vs InstumentedAttribute.png
>> 
>> 
>> -- 
>> 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 a topic in the 
>> Google Groups "sqlalchemy" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/sqlalchemy/qwj30TCnqzQ/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> sqlalchemy+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/sqlalchemy/9c0cedf3-434d-489b-8e60-a9ef68324df1%40app.fastmail.com
>>  
>> .
> 
> 
> 
> -- 
> 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/0F90254D-579D-4218-A8A2-59FE4E65F4E5%40gmail.com
>  
> .

-- 
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/6cfe6e7f-37ff-4c54-a961-aca5af80c7e3%40app.fastmail.com.


Re: [sqlalchemy] Column vs InstrumentedAttribute

2023-02-23 Thread Val Huber
Yes, Mike, I agree -  definitely seeing correct runtime behavior.

Just looking to get past the somewhat scary alerts (which, btw, do not occur in 
PyCharm).  Care and feeding of the IDE, I suppose…

Not super urgent, but would be good to clear up...

> On Feb 23, 2023, at 7:39 PM, Mike Bayer  
> wrote:
> 
> those are typing issues being reported by Pylance and do not affect the 
> runtime behavior of the application.
> 
> Pylance refers to typing stubs for SQLAlchemy 1.4 which don't apply to 
> SQLAlchemy 1.3.
> 
> 
> 
> On Thu, Feb 23, 2023, at 7:36 PM, Val Huber wrote:
>> Hello, All
>> 
>> In SQLAlchemy 1.4.29, the I get the warnings shown in the attached screen 
>> shot.  These are calls to LogicBank; if I alter LogicBank to use Column 
>> instead of InstrumentedAttribute, it fails with 
>> 
>> AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' 
>> object associated with Customer.Balance has an attribute 'descriptor'
>> 
>> I don't believe I got these warnings with SQLAlchemy 1.3.
>> 
>> Suggestions?
>> 
>> Thanks,
>> Val
>> 
>> 
>> 
>> 
>> -- 
>> 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/18551662-845e-42d5-acb1-b0ec31140b8fn%40googlegroups.com
>>  
>> .
>> 
>> Attachments:
>> Column vs InstumentedAttribute.png
> 
> 
> -- 
> 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 a topic in the Google 
> Groups "sqlalchemy" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/sqlalchemy/qwj30TCnqzQ/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to 
> sqlalchemy+unsubscr...@googlegroups.com 
> .
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy/9c0cedf3-434d-489b-8e60-a9ef68324df1%40app.fastmail.com
>  
> .

-- 
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/0F90254D-579D-4218-A8A2-59FE4E65F4E5%40gmail.com.


[sqlalchemy] How to LOCK TABLE for PostgreSQL

2023-02-23 Thread jens.t...@gmail.com
Hello,

In order to use the PostgreSQL LOCK 
 with SQLAlchemy, is 
there a better way than


*session.execute(sa.text(f"LOCK TABLE {Foo.__tablename__} IN SHARE MODE"))*

Poking through the dialect 
 docs or SQLA 
at large, I didn’t find much. This post 
 is a little dated, 
and this comment 
 seems 
to recommend the above approach (using a connection).

Also, do I need to *flush()* to push the LOCK to the db?

Much thanks!
Jens

-- 
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/0cfe4a51-f013-4299-a584-9ddb643bc906n%40googlegroups.com.


Re: [sqlalchemy] some gotchas in SQLAlchemy 2.0 and how to fix

2023-02-23 Thread Mike Bayer


On Thu, Feb 23, 2023, at 9:53 AM, Victor Olex wrote:
> Hi guys,
> 
> I came across a bunch of issues in a relatively simple code I got when 
> upgraded to SQLA 2.0. Below I provided issues seen and solutions, but very 
> much welcome any corrections. I thought this might come in handy for some. As 
> a side note not since the move from like 0.4 to 0.5 or 0.6 did I experience 
> SQLA working so different.

well it's 2.0, it's of similar magnitude as python 2 to 3.the API changes 
described below are all referred towards in the migration document at 
https://docs.sqlalchemy.org/en/20/changelog/migration_20.html , these are all 
top-level API changes that are prominently noted and are also emit warnings 
under 1.4 when using SQLALCHEMY_WARN_20 with future=True.


> 
> 
> TypeError: MetaData.__init__() got an unexpected keyword argument 'bind'
> meta = MeteaData(bind=e); meta.reflect(...) -> meta = MetaData(); 
> meta.reflect(bind=e, ...)
> 
> 
> TypeError: Connection.execute() got an unexpected keyword argument
> connection.execute(q, par1=v1, par2=v2) -> connection.execute(q, 
> dict(par1=v1, par2=v2))
> 
> 
> sqlalchemy.exc.InvalidRequestError: This connection has already initialized a 
> SQLAlchemy Transaction() object via begin() or autobegin; can't call begin() 
> here unless rollback() or commit() is called first.
> conn.execute() automatically starts transaction. If you use contect mgr with 
> conn.begin() after that without commit() or rollback() you will get that 
> error. Probably best to always use context manager? I would have preferred an 
> option to not throw when connection is already in transaction, i.e. 
> conn.begin(existing_ok=True).
> 
> https://stackoverflow.com/questions/70067023/pandas-and-sqlalchemy-df-to-sql-with-sqlalchemy-2-0-future-true-throws-an-err
> 
> TypeError: tuple indices must be integers or slices, not str
> cur.one()['DocumentID'] -> cur.one().DocumentID
> 
> 
> An insert statement into a varchar column with bound parameter being of type 
> float resulted in different fomatting. Previouisly '0.1', currently
> '0.11'. PyODBC, MSSQL, fast_executemany=False.
> 
> 
> AttributeError: 'Select' object has no attribute 'execute'
> query.execute() does not work, must use conn.execute(query)
> 
> Kind regards,
> 
> V.
> 
> 
> -- 
> 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/430d3237-e718-444c-beaf-8385bd5d0aean%40googlegroups.com
>  
> .

-- 
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/543ba79f-c125-4915-a683-b0077ef6af46%40app.fastmail.com.


Re: [sqlalchemy] Column vs InstrumentedAttribute

2023-02-23 Thread Mike Bayer
those are typing issues being reported by Pylance and do not affect the runtime 
behavior of the application.

Pylance refers to typing stubs for SQLAlchemy 1.4 which don't apply to 
SQLAlchemy 1.3.



On Thu, Feb 23, 2023, at 7:36 PM, Val Huber wrote:
> Hello, All
> 
> In SQLAlchemy 1.4.29, the I get the warnings shown in the attached screen 
> shot.  These are calls to LogicBank; if I alter LogicBank to use Column 
> instead of InstrumentedAttribute, it fails with 
> 
> AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' 
> object associated with Customer.Balance has an attribute 'descriptor'
> 
> I don't believe I got these warnings with SQLAlchemy 1.3.
> 
> Suggestions?
> 
> Thanks,
> Val
> 
> 
> 
> 
> -- 
> 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/18551662-845e-42d5-acb1-b0ec31140b8fn%40googlegroups.com
>  
> .
> 
> *Attachments:*
>  • Column vs InstumentedAttribute.png

-- 
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/9c0cedf3-434d-489b-8e60-a9ef68324df1%40app.fastmail.com.


[sqlalchemy] Re: Column vs InstrumentedAttribute

2023-02-23 Thread Val Huber
The target function looks like this:

class Rule:
"""Invoke these functions to declare rules.

Rules are *not* run as they are defined,
they are run when you issue `session.commit()'.

.. _Rule Summary:
https://github.com/valhuber/LogicBank/wiki/Rule-Summary

Use code completion to discover rules and their parameters.
"""

@staticmethod
def sum(derive: InstrumentedAttribute, as_sum_of: any, where: any = None, 
child_role_name: str = ""):
"""
Derive parent column as sum of designated child column, optional where

Example
Rule.sum(derive=models.Customer.Balance, as_sum_of=models.Order.AmountTotal,
where=Lambda row: row.ShippedDate is None)

Optimized to eliminate / minimize SQLs: Pruning, Adjustment Logic

Args:
derive: name of parent  being derived
as_sum_of: name of child  being summed
child_role_name: parent's child accessor attribute (required only for 
disambiguation)
where: optional where clause, designates which child rows are summed


"""
return Sum(derive, as_sum_of, where, child_role_name)




The model is declared like this:

class Customer(SAFRSBase, Base):
__tablename__ = 'Customer'
_s_collection_name = 'Customer'
__bind_key__ = 'None'

Id = Column(String(8000), primary_key=True)
CompanyName = Column(String(8000))
Balance = Column(DECIMAL)
On Thursday, February 23, 2023 at 4:36:11 PM UTC-8 Val Huber wrote:

> Hello, All
>
> In SQLAlchemy 1.4.29, the I get the warnings shown in the attached screen 
> shot.  These are calls to LogicBank; if I alter LogicBank to use Column 
> instead of InstrumentedAttribute, it fails with 
>
> AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' 
> object associated with Customer.Balance has an attribute 'descriptor'
>
> I don't believe I got these warnings with SQLAlchemy 1.3.
>
> Suggestions?
>
> Thanks,
> Val
>
>
>

-- 
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/34ea2b6f-6921-4245-985a-d4f2a258d7e0n%40googlegroups.com.


[sqlalchemy] Announcement: API Logic Server 8

2023-02-23 Thread Val Huber
Hello, All

If you are using SQLAlchemy and Flask, you might want to take a look at API 
Logic Server (open source).  It reads your schema, and creates an 
executable project you can customize in your IDE.  

The project includes the SQLAlchemy* model classes*, an *API*, and a 
multi-page *Admin App*.  You can also declare spreadsheet-like *rules* for 
multi-table derivations and constraints.

Version 8 adds *authentication* rules, eg, multi-tenant support, using 
outstanding SQLAlchemy support for

 @event.listens_for(session, 'do_orm_execute') 

Eval requires no install / config, using Codespaces, here: 
https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=593459232
 

Docs are here: https://apilogicserver.github.io/Docs 

Hope you find it useful, grateful for feedback...
Val

-- 
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/c0c3e6b7-b9c4-48b1-b754-17922a386ecfn%40googlegroups.com.


[sqlalchemy] some gotchas in SQLAlchemy 2.0 and how to fix

2023-02-23 Thread Victor Olex
Hi guys,

I came across a bunch of issues in a relatively simple code I got when 
upgraded to SQLA 2.0. Below I provided issues seen and solutions, but very 
much welcome any corrections. I thought this might come in handy for some. 
As a side note not since the move from like 0.4 to 0.5 or 0.6 did I 
experience SQLA working so different.

TypeError: MetaData.__init__() got an unexpected keyword argument 'bind'
meta = MeteaData(bind=e); meta.reflect(...) -> meta = MetaData(); 
meta.reflect(bind=e, ...)

TypeError: Connection.execute() got an unexpected keyword argument
connection.execute(q, par1=v1, par2=v2) -> connection.execute(q, 
dict(par1=v1, par2=v2))

sqlalchemy.exc.InvalidRequestError: This connection has already initialized 
a SQLAlchemy Transaction() object via begin() or autobegin; can't call 
begin() here unless rollback() or commit() is called first.
conn.execute() automatically starts transaction. If you use contect mgr 
with conn.begin() after that without commit() or rollback() you will get 
that error. Probably best to always use context manager? I would have 
preferred an option to not throw when connection is already in transaction, 
i.e. conn.begin(existing_ok=True).

https://stackoverflow.com/questions/70067023/pandas-and-sqlalchemy-df-to-sql-with-sqlalchemy-2-0-future-true-throws-an-err
TypeError: tuple indices must be integers or slices, not str
cur.one()['DocumentID'] -> cur.one().DocumentID

An insert statement into a varchar column with bound parameter being of 
type float resulted in different fomatting. Previouisly '0.1', currently
'0.11'. PyODBC, MSSQL, fast_executemany=False.

AttributeError: 'Select' object has no attribute 'execute'
query.execute() does not work, must use conn.execute(query)

Kind regards,

V.

-- 
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/430d3237-e718-444c-beaf-8385bd5d0aean%40googlegroups.com.