Я пытаюсь создать модели для своей базы данных и планирую использовать MySQL в качестве базы данных. Я хочу создать различные атрибуты моделей unsigned MySQL INTEGER
s и найти статьи, которые рекомендовали импортировать типы из sqlalchemy.dialects.mysql
, такие как INTEGER
, BOOLEAN
, VARCHAR
, чтобы указать специфические ограничения MySQL.INTEGER из sqlalchemy.dialects.mysql не принимает параметров в методе __init__?
Вот моя попытка:
import datetime
import sqlalchemy
from sqlalchemy.dialects.mysql import INTEGER, BOOLEAN, VARCHAR
from app_name import app, db
class User(db.Model):
__tablename__ = 'User'
id = db.Column(sqlalchemy.dialects.mysql.INTEGER(usigned=True), primary_key=True, autoincrement=True, nullable=False)
realname = db.Column(VARCHAR(256), nullable=False)
username = db.Column(VARCHAR(256), nullable=False)
joined = db.Column(db.TIMESTAMP, default=datetime.datetime.now)
email = db.Column(VARCHAR(255), nullable=False)
Однако обе вариации линии, определяющей атрибут id
, либо: db.Column(sqlalchemy.dialects.mysql.INTEGER(usigned=True), primary_key=True, autoincrement=True, nullable=False)
или
db.Column(INTEGER(usigned=True), primary_key=True, autoincrement=True, nullable=False)
неудачу с некоторым изменением следующие ошибки/трассировка:
File "/Users/Username/Development/App_Name/app_name/models/__init__.py", line 8, in <module>
class User(db.Model):
File "/Users/Username/Development/App_Name/app_name/models/__init__.py", line 10, in User
id = db.Column(sqlalchemy.dialects.mysql.INTEGER(usigned=True), primary_key=True, autoincrement=True, nullable=False)
File "/Users/Username/Development/.virtualenvs/app_name/lib/python3.5/site-packages/sqlalchemy/dialects/mysql/types.py", line 254, in __init__
super(INTEGER, self).__init__(display_width=display_width, **kw)
File "/Users/Username/Development/.virtualenvs/app_name/lib/python3.5/site-packages/sqlalchemy/dialects/mysql/types.py", line 54, in __init__
super(_IntegerType, self).__init__(**kw)
File "/Users/Username/Development/.virtualenvs/app_name/lib/python3.5/site-packages/sqlalchemy/dialects/mysql/types.py", line 24, in __init__
super(_NumericType, self).__init__(**kw)
TypeError: object.__init__() takes no parameters
Любое понимание того, почему мои попытки потерпели неудачу?
Это имеет смысл когда это объясняется так: '__init__' для' sqlalchemy.dialects.mysql.INTEGER' будет распознавать только определенные аргументы ключевого слова и игнорировать любые, которые не соответствуют его критериям. Поскольку я ошибся одним из имен параметров, он был проигнорирован и в конечном итоге неправильно распространялся на любые дальнейшие вызовы на разные '__init__'. Спасибо за быстрый ответ, очень ценим! –
точно @SeanPianka. Я не знаком с деревом наследования конкретного класса, но где-то через эти '__init__', которые получают вызванное что-то переданное 'object', которое не должно было иметь. –