【问题标题】:SQLAlchemy, how does it connect to an existing MYSQL database created in mysql workbench?SQLAlchemy,它如何连接到在 mysql 工作台中创建的现有 MYSQL 数据库?
【发布时间】:2014-11-18 19:17:31
【问题描述】:

我正在尝试创建简单的 GUI python 应用程序来填充现有的 MYSQL 数据库。我应该使用 sqlalchemy 连接到服务器吗?我只是想知道 Alchemy 如何连接到使用 MYSQL 工作台创建的现有数据库? 通常我使用 sqlalchemy 创建数据库和表,这就是我可以查询和编辑它的原因。但是对于这种情况,数据库已经创建。我想问题是如何创建现有数据库的 SQLAlchemy 代码? 抱歉没有更好的词来解释我的问题。我对数据库不是很熟悉。

【问题讨论】:

    标签: mysql sql python-2.7 sqlalchemy mysql-workbench


    【解决方案1】:

    您可以使用sqlacodegen 为现有数据库中的模型生成 python 代码。您还可以使用 SQLAlchemy 的内置功能 reflect the tables 甚至 map them to classes 在运行时动态加载所有内容。 SQLAlchemy 不关心数据库来自哪里,只关心它在哪里以及它是什么样子。

    【讨论】:

      【解决方案2】:

      要使用 SQLAlchemy 连接到数据库中的现有表,即使这些表不是使用 SQLAlchemy 创建的,也很容易。 为此,您需要使用 flask 框架和 flask-sqlalchemy

      app = Flask(__name__)
      app.secret_key = "any key"
      db = SQLAlchemy(app)
      app.config["SQLALCHEMY_DATABASE_URI"] = 'mysql://root@localhost/database_name'
      app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
      db.init_app(app)
      

      需要创建类以将这些映射到数据库中的表。 例如,数据库有一个名为 STUDENT 的表,该表的类将是这样的

      class Student(db.Model):
          __tablename__ = "STUDENT"
          id= db.Column(db.Integer , primary_key = True , nullable=False)
          name = db.Column(db.Integer)
          address= db.Column(db.String)
          grade= db.Column(db.String)
          year = db.Column(db.Integer)
      

      获取 SQLAlchemy 数据类型:https://docs.sqlalchemy.org/en/13/core/types.html 同样,也可以为其他表创建其他类。 并且要对数据执行任何操作,必须使用类对象类型。 假设您想获取学生列表

      stu_obj = Student.query.all()
      

      这将为您提供学生表中所有行的列表。 对于 SQLAlchemy ORM 查询 :https://www.tutorialspoint.com/sqlalchemy/sqlalchemy_orm_declaring_mapping.htm

      【讨论】:

        猜你喜欢
        • 2017-12-13
        • 2017-06-05
        • 2021-12-15
        • 1970-01-01
        • 2016-07-12
        • 1970-01-01
        • 2018-03-17
        • 1970-01-01
        • 2020-03-15
        相关资源
        最近更新 更多