Skip to content

Instantly share code, notes, and snippets.

@bubnenkoff
Created April 4, 2018 15:55
Show Gist options
  • Save bubnenkoff/30293759b5f1eeb124d97249a1fbcccf to your computer and use it in GitHub Desktop.
Save bubnenkoff/30293759b5f1eeb124d97249a1fbcccf to your computer and use it in GitHub Desktop.
В SQLite порядок и отсутствуие ключе не важны В PG все иначе. Работает только если мы:
1. ссылаемся на существующие ключи
2. порядок добавления правильный. в начале добавляем adr1 потом user1
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)
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(adr1)
sess.add(user1)
# sess.add(user2)
# sess.add(user3)
sess.commit()
x = sess.query(Users).filter(Users.id>0).first()
# print(type(x))
print(x.name)
@bubnenkoff
Copy link
Author

Без ограничения в uniq ничего не будет работать!!!!!

@bubnenkoff
Copy link
Author

тут не только в этом траблы

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment