Создание базы данных mysql с использованием sqlalchemy - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь создать базу данных mysql с использованием sqlalchemy.

У меня есть веб-приложение для фляг, которое содержит базу данных sqlite.Я пытаюсь перейти на MySQL.Я довольно новичок в sqlalchemy и узнал, как создавать базы данных через sqlalchemy.Однако базы данных были базами данных sqlite.Я пытаюсь использовать sqlalchemy для создания базы данных mysql, и после прочтения нескольких сообщений я все еще не могу ее получить.

Я также установил python-mysqldb

Фрагментыоригинальный код, использованный для создания базы данных sqlite, которая была успешной.

Base = declarative_base()

class Categories(Base):
    __tablename__ = 'categories'
    id = Column(Integer, primary_key=True)
    name = Column(String, unique=True)
    image = Column(String)
    link = Column(String)
    description = Column(String)

if __name__ =='__main__':
    engine = create_engine('sqlite:///app/database/main.db', echo=True)
    Base.metadata.create_all(engine)

попытка mysql

if __name__ =='__main__':
    engine = create_engine('mysql://user:password@localhost/app/database/main.db', echo=True)
    Base.metadata.create_all(engine)

mysql 2-я попытка

if __name__ =='__main__':
    engine = create_engine('mysql://user:password@localhost/app/database/main.db', echo=True)
    engine.execute("CREATE DATABASE main.db")
    engine.execute("USE main.db")

Ошибка, которую я продолжаю получать.

sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1049, "Unknown database 'app/database/main.db'") (Background on this error at: http://sqlalche.me/e/e3q8)

Мое лучшее предположение состоит в том, что мне явно не хватает использования mysql с sqlalchemy.

Любая помощь, даже направившая меня в нужном направлении, будет принята с благодарностью.

1 Ответ

0 голосов
/ 17 февраля 2019

a) Правильный синтаксис DBURI для mysql:

mysql://username:password@servername/databasename

b) База данных databasename должна быть создана первой.Поэтому перед запуском Python .create_all() вы должны подключиться к серверу db с помощью командной строки mysql client и выполнить инструкцию CREATE DATABASE databasename для создания пустой базы данных:

$ mysql -u username -p
... type password
> CREATE DATABASE databasename;

c) Вам следуеттеперь можно запускать код Python для создания таблиц в пустой базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...