I had to write a custom dialect to get any sort of functionality.  As I 
eventually got pyodbc to work though I've primarily been using that.  I'm 
working on getting the company I work for off of Teradata so all I really need 
is connectivity of some sort.  Besides that the development for the custom 
dialect has flagged but out of curiosity I might working on it again soon.

BTW, if you too are trying looking for ways to export data from TD I can't 
recommend this repo enough:
https://github.com/xlfe/dwhwrapper <https://github.com/xlfe/dwhwrapper>

It's a python exporter that wraps fexp (TD's export utility) and can produce 
CSV files!  I've extended it in a few minor ways for my usage but if I get 
approval from my company I may fork the original source and post my changes.  
Definitely worth a look if you are trying to export large amounts of data from 
TD to non-TD databases.

Cheers.

Mike






> On Jun 19, 2015, at 1:01 AM, Richard Baxter <baxter....@gmail.com> wrote:
> 
> Hi Lycovian
> 
> I'm trying to work with Teradata via SQL Alchemy and googling around has lead 
> mainly to your posts.  Were you able to get the two to work together well?  
> Or did you have to spend a considerable time writing the custom dialect?
> 
> Many thanks, Rich 
> 
> 
> On Sunday, 4 January 2015 19:32:07 UTC+1, Lycovian wrote:
> Never mind.  I had used the Bitbucket sqlalchemy-access as a template and 
> forgot to include the pyodbc.py file from the example in my code.  As it was 
> named pyodbc.py it confused the issue.
> 
> Please disregard question.
> 
> On Saturday, January 3, 2015 9:30:00 PM UTC-8, Lycovian wrote:
> I'm attempting to code up a simple Teradata dialect for SQLAlchemy but am 
> getting a curious error complaining of "No module named pyodbc" when I 
> attempt to do a create_engine on my Windows box.  I'm running on Windows 7 
> (32-bit), with stock Python 2.7 from the Python website and SQLA 0.9.8 and 
> pyODBC 3.0.7.
> 
> PyODBC otherwise works fine otherwise in other tests from Python, but fails 
> when SQLAlchemy attempts to __import__ it for some reason.  I've found 
> several posts regarding this issue for IronPython and other non-stock Windows 
> Pythons but nothing that is glaringly obvious as to what is wrong with my 
> relatively standard setup.
> 
>  I'll include the custom dialect files if anyone wants to try it themselves.  
> The nose tests also appear to fail with this error.
> 
> <snip>
> # both libs appear to be local to each other's Python site-packages dir
> In [10]: import sqlalchemy
> 
> In [11]: print sqlalchemy.__file__
> C:\Python27\lib\site-packages\sqlalchemy\__init__.pyc
> 
> In [12]: import pyodbc
> 
> In [13]: print pyodbc.__file__
> C:\Python27\lib\site-packages\pyodbc.pyd
> 
> # pyodbc appears to work
> In [15]: conn = pyodbc.connect('dsn=td_tms_user')
> 
> In [16]: conn.execute('select current_timestamp').fetchone()
> Out[16]: (datetime.datetime(2015, 1, 3, 21, 12, 21, 100000), )
> 
> # loading my custom dialect fails though
> In [17]: from sqlalchemy.dialects import registry
> 
> In [18]: registry.register("teradata.pyodbc", "sqlalchemy_teradata.pyodbc", 
> "teradataDialect_pyodbc")
> 
> In [19]: engine = 
> create_engine('teradata+pyodbc://tms_user:password@td_tms_user')
> ---------------------------------------------------------------------------
> ImportError                               Traceback (most recent call last)
> <ipython-input-19-36d09e5c6713> in <module>()
> ----> 1 engine = 
> create_engine('teradata+pyodbc://tms_user:password@td_tms_user')
> 
> C:\Python27\lib\site-packages\sqlalchemy\engine\__init__.pyc in 
> create_engine(*args, **kwargs)
>     360     strategy = kwargs.pop('strategy', default_strategy)
>     361     strategy = strategies.strategies[strategy]
> --> 362     return strategy.create(*args, **kwargs)
>     363
>     364
> 
> C:\Python27\lib\site-packages\sqlalchemy\engine\strategies.pyc in 
> create(self, name_or_url, **kwargs)
>      49         u = url.make_url(name_or_url)
>      50
> ---> 51         dialect_cls = u.get_dialect()
>      52
>      53         if kwargs.pop('_coerce_config', False):
> 
> C:\Python27\lib\site-packages\sqlalchemy\engine\url.pyc in get_dialect(self)
>     127         else:
>     128             name = self.drivername.replace('+', '.')
> --> 129         cls = registry.load(name)
>     130         # check for legacy dialects that
>     131         # would return a module with 'dialect' as the
> 
> C:\Python27\lib\site-packages\sqlalchemy\util\langhelpers.pyc in load(self, 
> name)
>     172     def load(self, name):
>     173         if name in self.impls:
> --> 174             return self.impls[name]()
>     175
>     176         if self.auto_fn:
> 
> C:\Python27\lib\site-packages\sqlalchemy\util\langhelpers.pyc in load()
>     196     def register(self, name, modulepath, objname):
>     197         def load():
> --> 198             mod = compat.import_(modulepath)
>     199             for token in modulepath.split(".")[1:]:
>     200                 mod = getattr(mod, token)
> 
> C:\Python27\lib\site-packages\sqlalchemy\util\compat.pyc in import_(*args)
>     138         if len(args) == 4:
>     139             args = args[0:3] + ([str(arg) for arg in args[3]],)
> --> 140         return __import__(*args)
>     141
>     142     callable = callable
> 
> ImportError: No module named pyodbc
> </snip>
> 
> -- 
> 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/-ONODKBWHXY/unsubscribe 
> <https://groups.google.com/d/topic/sqlalchemy/-ONODKBWHXY/unsubscribe>.
> To unsubscribe from this group and all its topics, send an email to 
> sqlalchemy+unsubscr...@googlegroups.com 
> <mailto:sqlalchemy+unsubscr...@googlegroups.com>.
> To post to this group, send email to sqlalchemy@googlegroups.com 
> <mailto:sqlalchemy@googlegroups.com>.
> Visit this group at http://groups.google.com/group/sqlalchemy 
> <http://groups.google.com/group/sqlalchemy>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.

-- 
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 post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to