Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save bubnenkoff/6a51ebd1e14b864d45fe33c4cb40edc4 to your computer and use it in GitHub Desktop.
Save bubnenkoff/6a51ebd1e14b864d45fe33c4cb40edc4 to your computer and use it in GitHub Desktop.
Пример модели для SQLAlchemy в SQLite ограничение на ForeignKey по умолчанию не работает, в PG все норм.
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import sessionmaker
from sqlalchemy_utils import database_exists, create_database
engine = create_engine('sqlite:///')
engine = create_engine('sqlite:///example_1_fk_check.db')
# engine = create_engine("postgres://postgres@localhost/mydb_3")
# if not database_exists(engine.url):
# create_database(engine.url)
print(database_exists(engine.url))
Session = sessionmaker(bind=engine)
sess = Session()
Base = declarative_base()
class Users(Base):
__tablename__ = 'mans'
id = Column(Integer, primary_key=True)
mail_id = Column(Integer, ForeignKey("address.id"))
name = Column(String)
age = Column(Integer)
class Address(Base):
__tablename__ = 'address'
id = Column(Integer, primary_key=True, unique=True)
email = Column(String)
Base.metadata.create_all(engine)
user1 = Users(id=1, mail_id=1, name='Mike', age=21)
# user2 = Users(id=2, name='Jow', age=22)
# user3 = Users(id=3, name='David', age=23)
adr1 = Address(id=1, email='[email protected]')
sess.add(user1)
sess.add(adr1)
# sess.add(user2)
# sess.add(user3)
sess.commit()
x = sess.query(Users).filter(Users.id>0).first()
# print(type(x))
print(x.name)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment