我正在尝试使用 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/