When I quickstart an SQLAlchemy project with identity turned on, and
setup the database and run tg-admin quickstart -s blah, I get:
Creating tables at mysql://johnny321:[EMAIL PROTECTED]:3302/test2
Traceback (most recent call last):
File "/usr/local/bin/tg-admin", line 7, in ?
sys.exit(
File
"/sw/lib/python2.4/site-packages/TurboGears-0.9a9-py2.4.egg/turbogears/command/base.py",
line 351, in main
command.run()
File
"/sw/lib/python2.4/site-packages/TurboGears-0.9a9-py2.4.egg/turbogears/command/base.py",
line 115, in run
sacommand(sqlobjcommand, sys.argv)
File "<string>", line 5, in sacommand
File
"/sw/lib/python2.4/site-packages/TurboGears-0.9a9-py2.4.egg/turbogears/command/base.py",
line 70, in sacreate
metadata.create_all()
File
"build/bdist.darwin-8.7.0-Power_Macintosh/egg/sqlalchemy/schema.py",
line 793, in create_all
File
"build/bdist.darwin-8.7.0-Power_Macintosh/egg/sqlalchemy/engine/base.py",
line 456, in run_callable
File
"build/bdist.darwin-8.7.0-Power_Macintosh/egg/sqlalchemy/schema.py",
line 792, in do
File
"build/bdist.darwin-8.7.0-Power_Macintosh/egg/sqlalchemy/engine/base.py",
line 298, in create
File
"build/bdist.darwin-8.7.0-Power_Macintosh/egg/sqlalchemy/engine/base.py",
line 399, in create
File
"build/bdist.darwin-8.7.0-Power_Macintosh/egg/sqlalchemy/engine/base.py",
line 423, in _run_visitor
File
"build/bdist.darwin-8.7.0-Power_Macintosh/egg/sqlalchemy/schema.py",
line 217, in accept_schema_visitor
File
"build/bdist.darwin-8.7.0-Power_Macintosh/egg/sqlalchemy/ansisql.py",
line 649, in visit_table
File
"build/bdist.darwin-8.7.0-Power_Macintosh/egg/sqlalchemy/engine/base.py",
line 685, in execute
File
"build/bdist.darwin-8.7.0-Power_Macintosh/egg/sqlalchemy/engine/base.py",
line 354, in proxy
File
"build/bdist.darwin-8.7.0-Power_Macintosh/egg/sqlalchemy/engine/base.py",
line 319, in _execute_raw
File
"build/bdist.darwin-8.7.0-Power_Macintosh/egg/sqlalchemy/engine/base.py",
line 338, in _execute
sqlalchemy.exceptions.SQLError: (OperationalError) (1170, "BLOB/TEXT
column 'visit_key' used in key specification without a key length")
'\nCREATE TABLE visit_identity (\n\tuser_id INTEGER, \n\tvisit_key TEXT
NOT NULL, \n\tPRIMARY KEY (visit_key), \n\t FOREIGN KEY(user_id)
REFERENCES tg_user (user_id)\n)\n\n' ()
Here is the model.py it created:
from datetime import datetime
from sqlalchemy import *
from sqlalchemy.ext.activemapper import ActiveMapper, column, \
one_to_many, one_to_one,
many_to_many
from turbogears import identity
from turbogears.database import metadata
class Visit(ActiveMapper):
class mapping:
__table__ = "visit"
visit_key = column(String(40), primary_key=True)
created = column(DateTime, nullable = False,
default=datetime.now)
expiry = column(DateTime)
def lookup_visit(cls, visit_key):
return Visit.get( visit_key );
lookup_visit= classmethod(lookup_visit)
# tables for SQLAlchemy identity
user_group = Table("user_group", metadata,
Column("user_id", Integer,
ForeignKey("tg_user.user_id"),
primary_key=True),
Column("group_id", Integer,
ForeignKey("tg_group.group_id"),
primary_key=True))
group_permission = Table("group_permission", metadata,
Column("group_id", Integer,
ForeignKey("tg_group.group_id"),
primary_key=True),
Column("permission_id", Integer,
ForeignKey("permission.permission_id"),
primary_key=True))
class VisitIdentity(ActiveMapper):
class mapping:
__table__="visit_identity"
visit_key = column(String, # foreign_key="visit.visit_key",
primary_key=True)
user_id = column(Integer, foreign_key="tg_user.user_id",
index=True)
class Group(ActiveMapper):
"""
An ultra-simple group definition.
"""
class mapping:
__table__="tg_group"
group_id = column(Integer, primary_key=True)
group_name = column(Unicode(16), unique=True)
display_name = column(Unicode(255))
created = column(DateTime, default=datetime.now)
users = many_to_many("User", user_group, backref="groups")
permissions = many_to_many("Permission", group_permission,
backref="groups")
class User(ActiveMapper):
"""
Reasonably basic User definition. Probably would want additional
attributes.
"""
class mapping:
__table__="tg_user"
user_id = column(Integer, primary_key=True)
user_name = column(Unicode(16), unique=True)
email_address = column(Unicode(255), unique=True)
display_name = column(Unicode(255))
password = column(Unicode(40))
created = column(DateTime, default=datetime.now)
groups = many_to_many("Group", user_group, backref="users")
def permissions(self):
perms = set()
for g in self.groups:
perms = perms | set(g.permissions)
return perms
permissions = property(permissions)
class Permission(ActiveMapper):
class mapping:
__table__="permission"
permission_id = column(Integer, primary_key=True)
permission_name = column(Unicode(16), unique=True)
description = column(Unicode(255))
groups = many_to_many("Group", group_permission,
backref="permmissions")
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears" 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/turbogears
-~----------~----~----~----~------~----~------~--~---