Вот абсурдная задача с sqlalchemy, которая кажется простой! Во-первых, это мой конфигурационный файл для подключения к базе данных mysql:
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
engine = create_engine('mysql://root:@localhost:3306/digi')
а затем я пытаюсь создать таблицу под названием «история продаж»:
from config import *
from sqlalchemy import *
class Sale(Base):
__tablename__ = 'sale-history'
order_id = column(Integer, primary_key= True)
customer_id = column(Integer)
item_id = column(Integer) #froeign key with product list
cartFinalize_dateTime = column(DATETIME)
amount_ordrered = column(Integer)
city_name = column(String(191))
quantity_ordered = column(Integer)
def __repr__(self):
return "<Sale(city_name='%s')>" % (self.city_name)
Sale.__table__
Base.metadata.create_all(engine)
Теперь мне интересно, что
Sale.__table__
а также
Base.metadata.create_all(engine)
не известны моему коду. Точнее, это не варианты предложений, показанные редактором pycharm. Отладка кода не выдает никаких ошибок (возвращает 0). Что нужно сделать, чтобы создать таблицы? Я очень ценю ваше внимание!
Код использует column
для определения столбцов в таблице, но он должен использовать Column
(обратите внимание на заглавную букву «C»).
Несколько советов/комментариев
from module import *
. Вы можете использовать псевдонимы для имен модулей, если они слишком длинные для ввода, например import sqlalchemy as sa
echo=True
в create_engine
Окончательный код может выглядеть так:
конфигурация
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
engine = create_engine('mysql://root:@localhost:3306/test', echo=True)
Модель
import sqlachemy as sa
import config
class Sale(Base):
__tablename__ = 'sale-history'
order_id = sa.Column(sa.Integer, primary_key=True)
customer_id = sa.Column(sa.Integer)
item_id = sa.Column(sa.Integer) # foreign key with product list
cartFinalize_dateTime = sa.Column(sa.DATETIME)
amount_ordrered = sa.Column(sa.Integer)
city_name = sa.Column(sa.String(191))
quantity_ordered = sa.Column(sa.Integer)
def __repr__(self):
return "<Sale(city_name='%s')>" % (self.city_name)
Base.metadata.create_all(config.engine)