我正在尝试使用sqlalchemy创建mysql数据库。
我有一个flask Web应用程序,其中包含一个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第二次尝试
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结合使用时显然缺少一些东西。
只要能帮助我指出正确的方向,将不胜感激。
答案 0 :(得分:0)
a)mysql的正确DBURI语法是:
mysql://username:password@servername/databasename
b)必须首先创建数据库databasename
。因此,在运行Python .create_all()
之前,您应该使用命令行mysql
客户端连接到db服务器,并执行CREATE DATABASE databasename
语句以创建一个空数据库:
$ mysql -u username -p
... type password
> CREATE DATABASE databasename;
c)您现在应该能够运行Python代码在空数据库中创建表。