Thanks for the answer,

I saw this page before but I don't know what to do with it! When I check 
the code in connection.py of spatialite, I see:

'mod_spatialite',  # Ubuntu
'mod_spatialite.so',  # Ubuntu
'mod_spatialite.dylib',  # macOS


But no definition for windows. I will make few test to make it works in my 
tm_session.

Thanks for the hint!

Have a nice day!

Le mardi 9 juillet 2019 17:14:24 UTC-4, andi a écrit :
>
>  
>
>  
>
> Hi Michael, 
>
>  
>
> I never used spatialite. But from looking at your example code, you seem 
> to create a “simple sqlite” connection, whereas somehow this extension 
> needs to be loaded. From what a quick google search revealed, there seems 
> not to exist some special connection string, that does the magic to load 
> this extension. 
>
>  
>
> Looking here: 
> https://datasette.readthedocs.io/en/stable/spatialite.html#spatial-indexing-latitude-longitude-columns
>  
> it looks like you’re missing
>
>  
>
> conn.enable_load_extension(True)
>
> conn.load_extension('/usr/local/lib/mod_spatialite.dylib')
>
>  
>
> which I would guess belongs into your `get_tm_session` function. Try 
> debugging into that and see if it works on `dbsession` or some property on 
> it. 
>
>  
>
> Hope that helps, Andi
>
>  
>
>  
>
> *From: *<pylons-...@googlegroups.com <javascript:>> on behalf of Michael 
> Lane <michael...@gmail.com <javascript:>>
> *Reply-To: *<pylons-...@googlegroups.com <javascript:>>
> *Date: *Tuesday, 9. July 2019 at 23:01
> *To: *pylons-discuss <pylons-...@googlegroups.com <javascript:>>
> *Subject: *[pylons-discuss] How to integrate spatialite in pyramid?
>
>  
>
> I would like to use spatialite <https://pypi.org/project/spatialite/> in 
> my project but I don't find the right way to do that. Does anybody have 
> already done that and can give me an example?
>
>  
>
> my environment:
>
> Windows 10:
> Python version: 3.6.8
> Local database: sqlite (for spatialite)
> Remote database: postgresql
>
> I find a lot of exemples where spatialite is set in the module parameter 
> for the engine <https://docs.sqlalchemy.org/en/13/core/engines.html> in 
> create_engine using lib like libsqlite3, mod_spatialite, pysqlite3 in my 
> case I use spatialiteinstall with pip (package define in setup.py)
>
> My problem is then I don't have the control of create_engine, in the 
> engine comming from settings in ini so I think that I have to pass the 
> setting by the ini file but I did'nt get it. I didn't find any good example 
> of code using same combination environment as mine (windows, pyramid, 
> spatialite).
>
>  
>
> There are the settings of ini file:
>
>  
>
> pyramid.reload_templates = true
>
> pyramid.reload_assets = true
>
> pyramid.debug_authorization = true
>
> pyramid.debug_notfound = false
>
> pyramid.debug_routematch = true
>
> pyramid.default_locale_name = en
>
> pyramid.includes =
>
>     pyramid_debugtoolbar
>
>     pyramid_tm
>
>  
>
> sqlalchemy.url = sqlite:///%(here)s/risc.sqlite
>
>  
>
> Code where the engine is create:
>
>  
>
> from sqlalchemy import engine_from_config
>
> from sqlalchemy.orm import sessionmaker
>
> from sqlalchemy.orm import configure_mappers
>
> import zope.sqlalchemy
>
>  
>
>  
>
> # run configure_mappers after defining all of the models to ensure
>
> # all relationships can be setup
>
> configure_mappers()
>
>  
>
>  
>
> def get_engine(settings, prefix='sqlalchemy.'):
>
>     return engine_from_config(settings, prefix)
>
>  
>
>  
>
> def get_session_factory(engine):
>
>     factory = sessionmaker()
>
>     factory.configure(bind=engine)
>
>     return factory
>
>  
>
>  
>
> def get_tm_session(session_factory, transaction_manager):
>
>     dbsession = session_factory()
>
>     zope.sqlalchemy.register(dbsession, 
> transaction_manager=transaction_manager)
>
>     return dbsession
>
>  
>
>  
>
> def includeme(config):
>
>     settings = config.get_settings()
>
>     settings['tm.manager_hook'] = 'pyramid_tm.explicit_manager'
>
>  
>
>     # use pyramid_tm to hook the transaction lifecycle to the request
>
>     config.include('pyramid_tm')
>
>  
>
>     # use pyramid_retry to retry a request when transient exceptions occur
>
>     config.include('pyramid_retry')
>
>  
>
>     session_factory = get_session_factory(get_engine(settings))
>
>     config.registry['dbsession_factory'] = session_factory
>
>  
>
>     # make request.dbsession available for use in Pyramid
>
>     config.add_request_method(
>
>         # r.tm is the transaction manager used by pyramid_tm
>
>     lambda r: get_tm_session(session_factory, r.tm),
>
>     'dbsession',
>
>     reify=True
>
> )
>
>  
>
> And the settings module of setup.py
>
>  
>
> requires = [
>
>     'bcrypt',
>
>     'docutils',
>
>     'plaster_pastedeploy',
>
>     'pyramid',
>
>     'pyramid_debugtoolbar',
>
>     'pyramid_retry',
>
>     'pyramid_tm',
>
>     'sqlalchemy',
>
>     'transaction',
>
>     'zope.sqlalchemy',
>
>     'waitress',
>
>     'sphinx',
>
>     'flake8',
>
>     'pyLint',
>
>     'pg8000',
>
>     'geoalchemy2',
>
>     'spatialite'
>
> ]
>
>  
>
> I'm pretty sure than I miss a little something, but I'm not able to find 
> it my way. I little hint will be appreciated on this one.
>
>  
>
> Thanks
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "pylons-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to pylons-...@googlegroups.com <javascript:>.
> To post to this group, send email to pylons-...@googlegroups.com 
> <javascript:>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/pylons-discuss/15188080-e8eb-4e72-bf32-14dadf302909%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/pylons-discuss/15188080-e8eb-4e72-bf32-14dadf302909%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to pylons-discuss+unsubscr...@googlegroups.com.
To post to this group, send email to pylons-discuss@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pylons-discuss/4ea3b638-982e-40a0-9f4b-2f2e26936a35%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to