繁体   English   中英

使用sqlalchemy创建mysql数据库

[英]Creating a mysql database using sqlalchemy

我正在尝试使用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一起使用,显然缺少一些东西。

我们将不胜感激,甚至为我指明正确的方向。

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代码在空数据库中创建表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM