I am busy with learning turbogears, which i find a very good and easy to work framework in compare with Django, that gave me many problems with the imports. i have a.py file which i wrote a code, but doesn't seem to be able to assemble any primary key columns for my mapped table
raise sa_exc.ArgumentError(
sqlalchemy.exc.ArgumentError: Mapper mapped class car->car could not assemble any primary key columns for mapped table 'car'
from unicodedata import name
from sqlalchemy import Column
from sqlalchemy.types import Integer, Unicode
from dataproj.model import DeclarativeBase
class car(DeclarativeBase):
__tablename__ = 'car'
carid = Column(Integer, Primary_key = True)
make = Column(Unicode(40), nullable = False, default = '')
model = Column(Unicode(40), nullable = False, default = '')
year = Column(Integer, nullable = False, default = '')
transmission = Column(Unicode(10), nullable = False, default = '')
Have tried it with a different format like de sqlalchemy document says but its still not working this is what i typed:
from unicodedata import name
from sqlalchemy import PrimaryKeyConstraint
from sqlalchemy import Column
from sqlalchemy.types import Integer, Unicode
from dataproj.model import DeclarativeBase
class car(DeclarativeBase):
__tablename__ = 'car'
Column('car_id', Integer, Primary_key = True)
Column('make', Unicode(40), nullable = False, default = '')
Column('model', Unicode(40), nullable = False, default = '')
Column('year', Integer, nullable = False, default = '')
Column('transmission', Unicode(10), nullable = False, default = '')
and this is the traceback:
Traceback (most recent call last):
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tg/wsgiapp.py", line 82, in __call__
response = self.wrapped_dispatch(controller, environ, context)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tg/appwrappers/errorpage.py", line 64, in __call__
resp = self.next_handler(controller, environ, context)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tg/appwrappers/transaction_manager.py", line 107, in __call__
reraise(*exc_info)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tg/_compat.py", line 87, in reraise
raise value
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tg/appwrappers/transaction_manager.py", line 79, in __call__
response = self.next_handler(controller, environ, context)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tg/appwrappers/caching.py", line 54, in __call__
return self.next_handler(controller, environ, context)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tg/appwrappers/session.py", line 71, in __call__
response = self.next_handler(controller, environ, context)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tg/appwrappers/identity.py", line 47, in __call__
return self.next_handler(controller, environ, context)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tg/appwrappers/i18n.py", line 71, in __call__
return self.next_handler(controller, environ, context)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tg/wsgiapp.py", line 243, in _dispatch
return controller(environ, context)
File "/Users/alexandra/TurboGearsProjects/dataproj/dataproj/lib/base.py", line 27, in __call__
return TGController.__call__(self, environ, context)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tg/controllers/dispatcher.py", line 118, in __call__
response = self._perform_call(context)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tg/controllers/dispatcher.py", line 107, in _perform_call
r = self._call(action, params, remainder=remainder, context=context)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tg/controllers/decoratedcontroller.py", line 129, in _call
output = controller_caller(context_config, bound_controller_callable, remainder, params)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tg/controllers/decoration.py", line 21, in _decorated_controller_caller
return application_controller_caller(tg_config, controller, remainder, params)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tgext/debugbar/sections/timing.py", line 77, in wrapped_controller
result = profiler.runcall(controller, *args, **kw)
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/cProfile.py", line 109, in runcall
return func(*args, **kw)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/tg/configurator/components/dispatch.py", line 114, in _call_controller
return controller(*remainder, **params)
File "/Users/alexandra/TurboGearsProjects/dataproj/dataproj/controllers/root.py", line 127, in showgrid
data = DBSession.query(car).all()
File "<string>", line 2, in query
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2159, in query
return self._query_cls(entities, self, **kwargs)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 180, in __init__
self._set_entities(entities)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 187, in _set_entities
self._raw_columns = [
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 188, in <listcomp>
coercions.expect(
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/sqlalchemy/sql/coercions.py", line 188, in expect
resolved = impl._literal_coercion(
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/sqlalchemy/sql/coercions.py", line 401, in _literal_coercion
self._raise_for_expected(element, argname)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/sqlalchemy/sql/coercions.py", line 437, in _raise_for_expected
return super(_SelectIsNotFrom, self)._raise_for_expected(
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/sqlalchemy/sql/coercions.py", line 283, in _raise_for_expected
util.raise_(exc.ArgumentError(msg, code=code), replace_context=err)
File "/Users/alexandra/TurboGearsProjects/tgenv/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 208, in raise_
raise exception
sqlalchemy.exc.ArgumentError: Column expression or FROM clause expected, got <class 'dataproj.model.car.car'>.
In your definition of the carid
column you have a casing typo - the argument name needs to be all lower case primary_key=True
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.