SM
database.py:
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from config import db_host, db_name, db_user, db_password
engine = create_engine("mysql://{}:{}@{}/{}".format(db_user, db_password, db_host, db_name), convert_unicode=True, echo=True)
db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()
def init_db():
# import all modules here that might define models so that
# they will be registered properly on the metadata. Otherwise
# you will have to import them first before calling init_db()
from models.book import Book
Base.metadata.create_all(bind=engine) # не работает
Book.__table__.create(bind=engine) # работает
if __name__ == "__main__":
init_db()
models/book.py:
from sqlalchemy import Column, Integer, String
from database import Base
class Book(Base):
__tablename__ = "books"
id = Column(Integer, autoincrement=True, primary_key=True)
title = Column(String(80), nullable=False)
def __repr__(self):
return "<Title: {}>".format(self.title)
