当包含外键时,我无法保存到SQLAlchemy

时间:2018-05-10 11:12:10

标签: python sqlalchemy foreign-keys

我可以用SQL Alchemy创建我的表。这是我的完整代码:

from sqlalchemy import create_engine, Column, Integer, ForeignKey, 
String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

Base = declarative_base()


class User(Base):
    __tablename__ = 'person'

    id = Column(Integer, primary_key=True)
    username = Column(String, unique=True)

class Cars(Base):
    __tablename__ = "car"

    id = Column(Integer, primary_key=True)
    brand = Column(String)
    year = Column(Integer)
    plate = Column(String, unique=True)
    owner_id = Column(Integer, ForeignKey('person.id'))


engine = create_engine('postgresql://postgres:pass@localhost:5432/sqlalchemy')
#Base.metadata.create_all(bind=engine)

Session = sessionmaker(bind=engine)
session = Session()


user = User()
user.username = "Jack"

car = Cars()
car.brand = "Bmw"
car.plate = "NK 948"
car.year = 2016
car.owner_id = user

session.add(user)
session.add(car)
session.commit()
session.close()

但是当我尝试将其保存到数据库时,我收到以下错误。

Traceback (most recent call last):
.
.
.
.
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'User' [SQL: 'INSERT INTO car (brand, year, plate, owner_id) VALUES (%(brand)s, %(year)s, %(plate)s, %(owner_id)s) RETURNING car.id'] [parameters: {'brand': 'Bmw', 'year': 2016, 'plate': 'NK 948', 'owner_id': <__main__.User object at 0x10d27d358>}] (Background on this error at: http://sqlalche.me/e/f405)

我做错了什么?似乎我可以为User表保存raws。但对于Cars表,我认为ForeignKey有问题。但我不明白。

感谢。

0 个答案:

没有答案
相关问题