Add support for MySQL database (#556)

This commit is contained in:
Tanay Soni 2020-11-05 17:39:39 +01:00 committed by GitHub
parent 40c5c8edb4
commit d744dc109c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,7 +1,7 @@
from typing import Any, Dict, Union, List, Optional
from uuid import uuid4
from sqlalchemy import create_engine, Column, Integer, String, DateTime, func, ForeignKey, Boolean
from sqlalchemy import create_engine, Column, Integer, String, DateTime, func, ForeignKey, Boolean, Text
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, sessionmaker
from sqlalchemy.sql import case
@ -16,7 +16,7 @@ Base = declarative_base() # type: Any
class ORMBase(Base):
__abstract__ = True
id = Column(String, default=lambda: str(uuid4()), primary_key=True)
id = Column(String(100), default=lambda: str(uuid4()), primary_key=True)
created = Column(DateTime, server_default=func.now())
updated = Column(DateTime, server_default=func.now(), server_onupdate=func.now())
@ -24,19 +24,20 @@ class ORMBase(Base):
class DocumentORM(ORMBase):
__tablename__ = "document"
text = Column(String, nullable=False)
index = Column(String, nullable=False)
vector_id = Column(String, unique=True, nullable=True)
text = Column(Text, nullable=False)
index = Column(String(100), nullable=False)
vector_id = Column(String(100), unique=True, nullable=True)
# speeds up queries for get_documents_by_vector_ids() by having a single query that returns joined metadata
meta = relationship("MetaORM", backref="Document", lazy="joined")
class MetaORM(ORMBase):
__tablename__ = "meta"
name = Column(String, index=True)
value = Column(String, index=True)
document_id = Column(String, ForeignKey("document.id", ondelete="CASCADE"), nullable=False)
name = Column(String(100), index=True)
value = Column(String(1000), index=True)
document_id = Column(String(100), ForeignKey("document.id", ondelete="CASCADE"), nullable=False)
documents = relationship(DocumentORM, backref="Meta")
@ -44,14 +45,14 @@ class MetaORM(ORMBase):
class LabelORM(ORMBase):
__tablename__ = "label"
document_id = Column(String, ForeignKey("document.id", ondelete="CASCADE"), nullable=False)
index = Column(String, nullable=False)
document_id = Column(String(100), ForeignKey("document.id", ondelete="CASCADE"), nullable=False)
index = Column(String(100), nullable=False)
no_answer = Column(Boolean, nullable=False)
origin = Column(String, nullable=False)
question = Column(String, nullable=False)
origin = Column(String(100), nullable=False)
question = Column(Text, nullable=False)
is_correct_answer = Column(Boolean, nullable=False)
is_correct_document = Column(Boolean, nullable=False)
answer = Column(String, nullable=False)
answer = Column(Text, nullable=False)
offset_start_in_doc = Column(Integer, nullable=False)
model_id = Column(Integer, nullable=True)