Картограф Mapper | User | users не смог собрать ни одного столбца первичного ключа для отображаемой таблицы «пользователи»

#python #flask #sqlalchemy #flask-sqlalchemy

#python #flask #sqlalchemy #flask-sqlalchemy

Вопрос:

 from sqlalchemy import *
from sqlalchemy import create_engine, ForeignKey
from sqlalchemy import Column, Date, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, backref

engine = create_engine('sqlite:///database.db', echo=True)
Base = declarative_base()

########################################################################
class User(Base):
    """"""
    __tablename__ = "users"

id = Column(Integer, primary_key=True)
username = Column(String)
password = Column(String)

#----------------------------------------------------------------------
def __init__(self, username, password):
    """"""
    self.username = username
    self.password = password

# create tables
Base.metadata.create_all(engine)
  

Предполагается, что это создаст структуру БД с именем файла database.db, но появляется ошибка, и как мне ее решить?
Любая помощь будет оценена.

Комментарии:

1. Если ваш отступ такой, как вы представили здесь, то у вас простая опечатка. Столбцы и __init__ функция не являются частью тела вашего класса.

2. Спасибо, приятель. Это сработало

Ответ №1:

Это была проблема с отступом. Решил это. Решение:

 from sqlalchemy import *
from sqlalchemy import create_engine, ForeignKey
from sqlalchemy import Column, Date, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, backref

engine = create_engine('sqlite:///tutorial.db', echo=True)
Base = declarative_base()

########################################################################
class User(Base):
    """"""
    __tablename__ = "users"

    id = Column(Integer, primary_key=True)
    username = Column(String)
    password = Column(String)

#----------------------------------------------------------------------
def __init__(self, username, password):
    """"""
    self.username = username
    self.password = password

# create tables
Base.metadata.create_all(engine)
  

Ответ №2:

В моем случае я получил эту ошибку, потому что я написал это как

 Column('id', Integer)
Column('username', String)
  

Против

 id = Column('id', Integer)
username = Column('username', String)