I can open tables and query database - everything seems to be ok.
However, I cannot get the sqlAlchemy connection working.
>>>
--
You received this message because you are subscribed to the Google Groups "sqlalchemy" group.
To view this discussion on the web visit https://groups.google.com/d/msg/sqlalchemy/-/cOhqTKsDv94J.
To post to this group, send email to sqlal...@googlegroups.com.
To unsubscribe from this group, send email to sqlalchemy+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
To view this discussion on the web visit https://groups.google.com/d/msg/sqlalchemy/-/wc22ZhMavDUJ.
>>> cx = pyodbc.connect('DSN=Quickbooks')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
pyodbc.Error: ('IM001', '[IM001] [QODBC] Driver not capable (11010) (SQLSetConnn
ectAttr(SQL_ATTR_AUTOCOMMIT))')
>>> cx = pyodbc.connect('DSN=Quickbooks', autocommit=True)
>>> cursor = cx.cursor()
>>> cursor.execute("select * from vendor")
<pyodbc.Cursor object at 0x03237FA8>
>>> cursor.fetchone()
('8000056F-1349473233', datetime.datetime(2012, 10, 5, 16, 40, 33), datetime.dat
etime(2012, 11, 23, 10, 37, 18), '1353688638', '7 Accessories **06-08-10**', Tru
I have no problem at all with pyodbc and qodbcHere is a sample I just did:I include a call to connect without autocommit - which throws an error, and then the one what works.The error message is exactly the same one I get trying to connect SQLAlchemy.I do not know how to translate cx = pyodbc.connect('DSN=Quickbooks', autocommit=True)into an equivalent connection string for SQLAlchemy.>>> cx = pyodbc.connect('DSN=Quickbooks')Traceback (most recent call last):File "<stdin>", line 1, in <module>pyodbc.Error: ('IM001', '[IM001] [QODBC] Driver not capable (11010) (SQLSetConnnectAttr(SQL_ATTR_AUTOCOMMIT))')>>> cx = pyodbc.connect('DSN=Quickbooks', autocommit=True)>>> cursor = cx.cursor()>>> cursor.execute("select * from vendor")<pyodbc.Cursor object at 0x03237FA8>>>> cursor.fetchone()('8000056F-1349473233', datetime.datetime(2012, 10, 5, 16, 40, 33), datetime.datetime(2012, 11, 23, 10, 37, 18), '1353688638', '7 Accessories **06-08-10**', Tru
To view this discussion on the web visit https://groups.google.com/d/msg/sqlalchemy/-/1S0LOWAysQ0J.
On Dec 19, 2012, at 2:49 PM, ScottyMac wrote:I have no problem at all with pyodbc and qodbcHere is a sample I just did:I include a call to connect without autocommit - which throws an error, and then the one what works.The error message is exactly the same one I get trying to connect SQLAlchemy.I do not know how to translate cx = pyodbc.connect('DSN=Quickbooks', autocommit=True)into an equivalent connection string for SQLAlchemy.>>> cx = pyodbc.connect('DSN=Quickbooks')Traceback (most recent call last):File "<stdin>", line 1, in <module>pyodbc.Error: ('IM001', '[IM001] [QODBC] Driver not capable (11010) (SQLSetConnnectAttr(SQL_ATTR_AUTOCOMMIT))')>>> cx = pyodbc.connect('DSN=Quickbooks', autocommit=True)>>> cursor = cx.cursor()>>> cursor.execute("select * from vendor")<pyodbc.Cursor object at 0x03237FA8>>>> cursor.fetchone()('8000056F-1349473233', datetime.datetime(2012, 10, 5, 16, 40, 33), datetime.datetime(2012, 11, 23, 10, 37, 18), '1353688638', '7 Accessories **06-08-10**', Truas I said, adding it to create_engine:from sqlalchemy import create_engineengine = create_engine('mssql+pyodbc://ADMIN@Quickbooks', connect_args={"autocommit":True})
I suppose I am thick(stupid).Having just told me in a previous post not to use mssql+ unless my database was really MSSQl, I did not include that - and it gives me a module not found error.HOWEVER:If I use exactly the string you have listed above, my autocommit error goes away, replaced by another error:
">>> engine = create_engine('mssql+pyodbc://ADMIN@Quickbooks', connect_args={"aut
ocommit":True})
>>> con = engine.connect()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\Development\libs\trunk\sqlalchemy\engine\base.py", line 1811, in conn
ect
return self.Connection(self, **kwargs)
File "c:\Development\libs\trunk\sqlalchemy\engine\base.py", line 832, in __ini
t__
self.__connection = connection or engine.raw_connection()
File "c:\Development\libs\trunk\sqlalchemy\engine\base.py", line 1874, in raw_
connection
return self.pool.unique_connection()
File "c:\Development\libs\trunk\sqlalchemy\pool.py", line 142, in unique_conne
ction
return _ConnectionFairy(self).checkout()
File "c:\Development\libs\trunk\sqlalchemy\pool.py", line 369, in __init__
rec = self._connection_record = pool.get()
File "c:\Development\libs\trunk\sqlalchemy\pool.py", line 213, in get
return self.do_get()
File "c:\Development\libs\trunk\sqlalchemy\pool.py", line 734, in do_get
con = self.create_connection()
File "c:\Development\libs\trunk\sqlalchemy\pool.py", line 147, in create_conne
ction
return _ConnectionRecord(self)
File "c:\Development\libs\trunk\sqlalchemy\pool.py", line 258, in __init__
l.first_connect(self.connection, self)
File "c:\Development\libs\trunk\sqlalchemy\engine\strategies.py", line 151, in
first_connect
dialect.initialize(c)
File "c:\Development\libs\trunk\sqlalchemy\connectors\pyodbc.py", line 114, in
initialize
super(PyODBCConnector, self).initialize(connection)
File "c:\Development\libs\trunk\sqlalchemy\dialects\mssql\base.py", line 1095,
in initialize
super(MSDialect, self).initialize(connection)
File "c:\Development\libs\trunk\sqlalchemy\engine\default.py", line 155, in in
itialize
self._get_default_schema_name(connection)
File "c:\Development\libs\trunk\sqlalchemy\dialects\mssql\base.py", line 1111,
in _get_default_schema_name
user_name = connection.scalar("SELECT user_name() as user_name;")
File "c:\Development\libs\trunk\sqlalchemy\engine\base.py", line 1165, in scal
ar
return self.execute(object, *multiparams, **params).scalar()
File "c:\Development\libs\trunk\sqlalchemy\engine\base.py", line 1191, in exec
ute
params)
File "c:\Development\libs\trunk\sqlalchemy\engine\base.py", line 1287, in _exe
cute_text
return self.__execute_context(context)
File "c:\Development\libs\trunk\sqlalchemy\engine\base.py", line 1302, in __ex
ecute_context
context.parameters[0], context=context)
File "c:\Development\libs\trunk\sqlalchemy\engine\base.py", line 1401, in _cur
sor_execute
context)
File "c:\Development\libs\trunk\sqlalchemy\engine\base.py", line 1394, in _cur
sor_execute
context)
File "c:\Development\libs\trunk\sqlalchemy\engine\default.py", line 299, in do
_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (ProgrammingError) ('42000', '[42000] [QODBC] E
xpected lexical element not found: FROM (11015) (SQLExecDirectW)') 'SELECT user_
name() as user_name;' ()
"
yeah that's where the MSSQL dialect is doing things that aren't going to work with QODBC. I don't have a quick fix for this for you, it would require creating a new dialect that doesn't perform these particular startup queries. unless you want to get into doing a little bit of programming, you might have to work directly with pyodbc for now.