Я могу создавать свои таблицы с помощью 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)
Что я делаю не так? Кажется, что я могу сохранить сырье для таблицы пользователя. Но для таблиц Cars, я думаю, что-то не так с ForeignKey. Но я не поняла.
Спасибо.