Thanks again Niphlod I don't think using SQL server is an option in linux-land? All the examples I have seen uses FreeTDS.
On Monday, July 13, 2015 at 6:34:30 PM UTC+2, Niphlod wrote: > > web2py doesn't use freetds by default as a driver, but SQL Server... so if > you can connect with freetds with pypyodbc it's not said that the same > works within web2py (unless you use the same driver args). > That being said, the error "no driver available" smells. How did you > install web2py ? > > > > On Monday, July 13, 2015 at 8:02:07 AM UTC+2, achristoffersen wrote: >> >> (x-post from stackoverflow: >> http://stackoverflow.com/questions/31371462/web2py-cant-connect-to-mssql-via-pypyodbc-but-possible-to-connect-from-idle >> ) >> >> I can connect via 'naked' pypyodbc, but not via the web2py DAL. >> >> I installed pypyodbc as per these instructions: >> https://code.google.com/p/pypyodbc/wiki/Linux_ODBC_in_3_steps >> >> In my web2py model I have: >> >> import pypyodbc # ps. Anthony informs me there is no need for this. >> px = DAL('mssql4://username:password@url,portnumber/databasename') >> >> In my controller I then have: >> >> def index(): >> return dict(message=(px.executesql('SELECT top 1 * FROM table;'))) >> >> Which gives me a ticket with the following traceback: >> >> Traceback (most recent call last): >> File "/home/andreas/web2py_project/web2py/gluon/restricted.py", line >> 227, in restricted >> exec ccode in environment >> File >> "/home/andreas/web2py_project/web2py/applications/welcome/models/db.py", >> line 95, in <module> >> px = DAL('mssql4://UID:password@URL,port/database') >> File >> "/home/andreas/web2py_project/web2py/gluon/packages/dal/pydal/base.py", >> line 174, in __call__ >> obj = super(MetaDAL, cls).__call__(*args, **kwargs) >> File >> "/home/andreas/web2py_project/web2py/gluon/packages/dal/pydal/base.py", >> line 459, in __init__ >> raise RuntimeError("Failure to connect, tried %d times:\n%s" % >> (attempts, tb)) >> RuntimeError: Failure to connect, tried 5 times: >> Traceback (most recent call last): >> File >> "/home/andreas/web2py_project/web2py/gluon/packages/dal/pydal/base.py", >> line 437, in __init__ >> self._adapter = ADAPTERS[self._dbname](**kwargs) >> File >> "/home/andreas/web2py_project/web2py/gluon/packages/dal/pydal/adapters/base.py", >> >> line 57, in __call__ >> obj = super(AdapterMeta, cls).__call__(*args, **kwargs) >> File >> "/home/andreas/web2py_project/web2py/gluon/packages/dal/pydal/adapters/mssql.py", >> >> line 106, in __init__ >> if do_connect: self.find_driver(adapter_args,uri) >> File >> "/home/andreas/web2py_project/web2py/gluon/packages/dal/pydal/adapters/base.py", >> >> line 188, in find_driver >> raise RuntimeError("no driver available %s" % str(self.drivers)) >> RuntimeError: no driver available ('pyodbc',) >> >> Which I find I weird, since I try to use pypyodbc, and not pyodbc. (I >> tried to import pypyodbc as pyodbc btw, same result). >> >> If I open a python prompt I can do this: >> >> import pypyodbc >> cnxn = pypyodbc.connect('Driver=FreeTDS; Server=url; port= portnumber; >> uid=username; pwd=password;database=database') >> cursor = cnxn.cursor() >> cursor.execute("select top 1 * from a_table where a_date > getdate() >> order by newid()") >> rows = cursor.fetchall() >> for row in rows: >> print row >> >> Which then outputs the desired single random row. >> >> So either web2py DAL is broken (not likely) or I am doing something wrong? >> >> p.s. Web2py version: >> >> 2.11.2-stable+timestamp.2015.05.30.16.33.24 >> (Running on Rocket 1.2.6, Python 2.7.6) >> >> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

