init
This commit is contained in:
56
spider/omodels.py
Normal file
56
spider/omodels.py
Normal file
@ -0,0 +1,56 @@
|
||||
from datetime import datetime
|
||||
from sqlalchemy import create_engine, Column
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import sessionmaker, relationship
|
||||
from sqlalchemy.sql.schema import ForeignKey
|
||||
from sqlalchemy.sql.sqltypes import Boolean, DateTime, Integer, String
|
||||
|
||||
from normalutils.choices import StateType
|
||||
|
||||
|
||||
oengine = create_engine("sqlite:///db.sqlite3", future=True)
|
||||
Base = declarative_base()
|
||||
OSession = sessionmaker(oengine, future=True)
|
||||
|
||||
|
||||
class OWord(Base):
|
||||
__tablename__ = "word_word"
|
||||
id = Column("word_id", Integer, primary_key=True)
|
||||
spelling = Column(String(64), nullable=False, unique=True)
|
||||
importance = Column(String(32), nullable=True)
|
||||
state = Column(String(2), default=StateType.CHECKING.value, nullable=False)
|
||||
|
||||
|
||||
class OMeaningField(Base):
|
||||
__tablename__ = "meaning_meaningfield"
|
||||
id = Column("meaningfield_id", Integer, primary_key=True)
|
||||
current_version = Column(Integer, default=1)
|
||||
has_many = Column(Boolean, default=False)
|
||||
word_id = Column(Integer, ForeignKey("word_word.word_id", ondelete="CASCADE"))
|
||||
|
||||
word = relationship("OWord", backref="meaningfields")
|
||||
|
||||
|
||||
class OMeaning(Base):
|
||||
__tablename__ = "meaning_meaning"
|
||||
id = Column("meaning_id", Integer, primary_key=True)
|
||||
meaningfield_id = Column(
|
||||
Integer, ForeignKey("meaning_meaningfield.meaningfield_id", ondelete="CASCADE")
|
||||
)
|
||||
author_id = Column(Integer, nullable=True)
|
||||
author_name = Column(String(64), nullable=True)
|
||||
state = Column(String(2), default=StateType.CHECKING.value, nullable=False)
|
||||
word_property = Column(String(8), nullable=False)
|
||||
field = Column(String(64), nullable=True)
|
||||
version = Column(Integer, default=1, nullable=False)
|
||||
meaning = Column(String(128), nullable=False)
|
||||
sentence = Column(String(256), nullable=True)
|
||||
add_time = Column(DateTime, default=datetime.utcnow)
|
||||
|
||||
meaningfield = relationship("OMeaningField", backref="meanings")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
with OSession() as session:
|
||||
meaning = session.query(OMeaning).first()
|
||||
print(meaning.meaningfield.word.id)
|
||||
Reference in New Issue
Block a user