from sqlalchemy.orm import relationshp
from sqlalchemy import Column, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.dialects.mysql import INTEGER, CHAR
Base = declarative_base()
class User(Base):
__tablename__ = 'user'
__table_args__ = {'mysql_engine': 'InnoDB', 'sqlite_autoincrement': True, 'mysql_charset': 'utf8'}
id = Column(INTEGER(unsigned=True), nullable=False, autoincrement=True, primary_key=True)
name = Column(CHAR(32), nullable=False)
class Address(Base):
__tablename__ = 'address'
__table_args__ = {'mysql_engine': 'InnoDB', 'sqlite_autoincrement': True, 'mysql_charset': 'utf8'}
id = Column(INTEGER(unsigned=True), nullable=False, autoincrement=True, primary_key=True)
place = Column(CHAR(32), nullable=False)
user_id = Column(INTEGER(unsigned=True), ForeignKey("user.id"), nullable=False, unique=True)
user = relationship("User", foreign_keys=[user_id], backref="addresses")
from sqlalchemy import create_engine
dsn = "mysql+mysqlconnector://test:test@localhost/test?charset=utf8&use_unicode=0"
engine = create_engine(dsn)
Base.metadata.create_all(engine)
from sqlalchemy.orm import sessionmaker
s = sessionmaker(bind=engine)()
jack = User(name='jack')
jack.addresses = [
Address(place='where'),
Address(place='here')
]
s.add(jack)
s.commit()
报错
sqlalchemy.exc.IntegrityError: (IntegrityError) 1062 (23000): Duplicate entry '3' for key 'user_id' u'INSERT INTO address (place, user_id) VALUES (%(place)s, %(user_id)s)' {'place': 'here', 'user_id': 3}
from sqlalchemy import Column, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.dialects.mysql import INTEGER, CHAR
Base = declarative_base()
class User(Base):
__tablename__ = 'user'
__table_args__ = {'mysql_engine': 'InnoDB', 'sqlite_autoincrement': True, 'mysql_charset': 'utf8'}
id = Column(INTEGER(unsigned=True), nullable=False, autoincrement=True, primary_key=True)
name = Column(CHAR(32), nullable=False)
class Address(Base):
__tablename__ = 'address'
__table_args__ = {'mysql_engine': 'InnoDB', 'sqlite_autoincrement': True, 'mysql_charset': 'utf8'}
id = Column(INTEGER(unsigned=True), nullable=False, autoincrement=True, primary_key=True)
place = Column(CHAR(32), nullable=False)
user_id = Column(INTEGER(unsigned=True), ForeignKey("user.id"), nullable=False, unique=True)
user = relationship("User", foreign_keys=[user_id], backref="addresses")
from sqlalchemy import create_engine
dsn = "mysql+mysqlconnector://test:test@localhost/test?charset=utf8&use_unicode=0"
engine = create_engine(dsn)
Base.metadata.create_all(engine)
from sqlalchemy.orm import sessionmaker
s = sessionmaker(bind=engine)()
jack = User(name='jack')
jack.addresses = [
Address(place='where'),
Address(place='here')
]
s.add(jack)
s.commit()
报错
sqlalchemy.exc.IntegrityError: (IntegrityError) 1062 (23000): Duplicate entry '3' for key 'user_id' u'INSERT INTO address (place, user_id) VALUES (%(place)s, %(user_id)s)' {'place': 'here', 'user_id': 3}
