Hello - I am using SQLAlchemy as a part of the Enthought Python
Distribution. I'm getting an error while using metadata.drop_all()
with mysql, but not with sqlite. I was hoping someone could explain
what it is that I'm doing wrong.
Version info:
Mac OS 10.5.7
MySQL Ver 14.14 Distrib 5.1.34
Python 2.5.4 -- EPD_Py25 4.2.30201
SQLAlchemy 0.4.6
The sample code is below (you have to have a mysql database that you
are willing to try to destroy). The stack trace is below that. If I
replace driver='mysql' with driver='sqlite', I get no errors.
The grants for the above user and database are as follows:
mysql> show grants for pager_wr...@localhost;
+--------------------------------------------------------------------------------------------------------------------
+
| Grants for
pwr...@localhost
|
+--------------------------------------------------------------------------------------------------------------------
+
| GRANT USAGE ON *.* TO 'pwrite'@'localhost' IDENTIFIED BY PASSWORD
'*FC4C8052E3C11C2C1FBB16180EFFFC36869B177E' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON `sampledb`.*
TO 'pwrite'@'localhost' |
+--------------------------------------------------------------------------------------------------------------------
+
2 rows in set (0.00 sec)
#####code##########
#!/usr/bin/env python
from sqlalchemy.orm import sessionmaker
from sqlalchemy import *
import sqlalchemy.exceptions
driver = 'mysql'
user = 'pwrite'
password = 'rwrite'
host = 'localhost'
database = 'sampledb'
if driver == 'mysql':
connectionURL = '%s://%s:%...@%s/%s' %
(driver,user,password,host,database)
if driver == 'sqlite':
connectionURL = '%s:///%s' % (driver,host)
engine = create_engine(connectionURL,echo=True)
engine.connect()
Session = sqlalchemy.orm.sessionmaker(bind=engine, autoflush=True)
metadata = MetaData()
user_table = Table('user', metadata,
Column('id', Integer, primary_key=True),
Column('lastname', String(40)),
Column('firstname', String(100)),
Column('contact', String(25)),
Column('createdon', DateTime),
UniqueConstraint('lastname',
'firstname','contact'),
mysql_engine='InnoDB'
)
metadata.drop_all(bind=engine)
#####code##########
#####trace##########
Traceback (most recent call last):
File "./dbtest.py", line 33, in <module>
metadata.drop_all(bind=engine)
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/
schema.py", line 1609, in drop_all
bind.drop(self, checkfirst=checkfirst, tables=tables)
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/engine/
base.py", line 1144, in drop
self._run_visitor(self.dialect.schemadropper, entity,
connection=connection, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/engine/
base.py", line 1168, in _run_visitor
visitorcallable(self.dialect, conn, **kwargs).traverse(element)
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/sql/
visitors.py", line 75, in traverse
return self._non_cloned_traversal(obj)
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/sql/
visitors.py", line 134, in _non_cloned_traversal
self.traverse_single(target)
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/sql/
visitors.py", line 35, in traverse_single
return meth(obj, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/sql/
compiler.py", line 912, in visit_metadata
collection = [t for t in metadata.table_iterator(reverse=True,
tables=self.tables) if (not self.checkfirst or self.dialect.has_table
(self.connection, t.name, schema=t.schema))]
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/
databases/mysql.py", line 1578, in has_table
self._autoset_identifier_style(connection)
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/
databases/mysql.py", line 1802, in _autoset_identifier_style
charset=charset))
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/engine/
base.py", line 844, in execute
return Connection.executors[c](self, object, multiparams, params)
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/engine/
base.py", line 853, in _execute_text
context = self.__create_execution_context(statement=statement,
parameters=parameters)
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/engine/
base.py", line 948, in __create_execution_context
return self.engine.dialect.create_execution_context
(connection=self, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/
databases/mysql.py", line 1474, in create_execution_context
return MySQLExecutionContext(self, connection, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/engine/
default.py", line 194, in __init__
self.cursor = self.create_cursor()
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/engine/
default.py", line 276, in create_cursor
return self._connection.connection.cursor()
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/SQLAlchemy-0.4.6n1-py2.5.egg/sqlalchemy/
pool.py", line 370, in cursor
c = self.connection.cursor(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/4.2.30201/lib/
python2.5/site-packages/MySQL_python-1.2.2n3-py2.5-macosx-10.3-fat.egg/
MySQLdb/connections.py", line 226, in cursor
return (cursorclass or self.cursorclass)(self)
AttributeError: 'Connection' object has no attribute 'cursorclass'
#####trace##########
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---