简体   繁体   中英

raise sa_exc.ArgumentError( sqlalchemy.exc.ArgumentError: Mapper mapped class car->car could not assemble any primary key columns for mapped table

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM