python - 使用sqlalchemy创建一个mysql数据库

标签 python mysql flask sqlalchemy

我正在尝试使用 sqlalchemy 创建一个 mysql 数据库。

我有一个包含 sqlite 数据库的 flask web 应用程序。我正在尝试切换到 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 第二次尝试

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 结合使用时,我显然遗漏了一些东西。

如果能给我指明正确方向的任何帮助,我们将不胜感激。

最佳答案

a) mysql 的正确 DBURI 语法是:

mysql://用户名:密码@服务器名/数据库名

b) 必须首先创建数据库databasename。因此,在运行 Python .create_all() 之前,您应该使用命令行 mysql 客户端连接到数据库服务器并执行 CREATE DATABASE databasename创建一个空数据库的语句:

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

c) 您现在应该能够运行 Python 代码以在空数据库中创建表。

关于python - 使用sqlalchemy创建一个mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54732047/

相关文章:

python - numpy 与 Python map() 中的向量化

python - 存储一个连接实例 - twisted.web

python - alembic 如何将所有修订文件合并到一个文件中?

java - 在使用c3p0连接池配置的Mysql主从复制中偶尔会遇到到slave的通信链路故障

ios - 我应该如何创建和传递用户 token ?

python - Flask + Wsgi + Docker - 尚未安装用户加载程序

java - 没有任何实现和变量的抽象类是有效的接口(interface)吗?

Python:如果两列没有出现在另一个 pandas 列中,如何删除 Pandas 中的行?

mysql - 如何在 Kohana 3.2 查询生成器中使用 MySQL "REPLACE"函数?

mysql - 我如何对大型 mysql 表中的单个列进行低安全性编码,然后反转它?