我可以用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有问题。但我不明白。
感谢。