【问题标题】:How do I connect server databases with Flask?如何使用 Flask 连接服务器数据库?
【发布时间】:2020-10-01 17:17:38
【问题描述】:

所以我一直在使用 PHP 和 MySQL 数据库、PHPMyAdmin 和 XAMPP 制作网站。我正在尝试从 PHP 切换到 python。所有的教程似乎都使用 SQLite 而不是 MYSQL。据我了解,sqlite 是无服务器的,不能保存某些数据类型,如日期时间,但我的网站需要日期时间。我将如何使用 python Flask 项目连接到 MySQL,或者我需要其他方式吗?

【问题讨论】:

  • 嗨,首先欢迎来到 SO!如果您需要从多个客户端读取/写入,Sqlite 不是一个好的解决方案。您可以使用任何 ORM 来维护您的数据库查询。 Sqlalchemy 是 Python 中最受欢迎的 ORM。您也可以使用烧瓶版的 ORM。他们提供了更多基于网络的功能。

标签: python mysql database web flask


【解决方案1】:

你需要使用像 PyMySQL 这样的客户端库

要安装 pymysql 使用:

pip install PyMySQL

然后使用这个函数,它会返回DB对象:

def make_connection():
            try:
               db = pymysql.connect(host='localhost',
                             user='root',
                             password='',
                             db='DatabaseName',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)
            except Exception as error:
                print(error)
            return db

【讨论】:

    【解决方案2】:

    正如@tirth-mehta 所提到的,如果你想在没有任何 ORM 的情况下使用连接,你应该使用客户端库。如果你觉得在每个函数调用中都忘记关闭连接太痛苦了,你可以像这样使用 decorator

    DB_CONFIG = {'host':'127.0.0.1',
                 'database':'dbname',
                 'user':'root',
                 'password':''}
    
    def connect(func):
        def _connect(*args, **kwargs):
            conn = pymysql.connect(**DB_CONFIG)
    
            try:
                rv = func(conn, *args, **kwargs)
            except Exception as e:
                print(e)
            else:
                conn.commit()
            finally:
                conn.close()
            return rv
        return _connect
    

    【讨论】:

      猜你喜欢
      • 2016-04-22
      • 1970-01-01
      • 2015-08-29
      • 2018-02-11
      • 2015-05-25
      • 1970-01-01
      • 2020-02-29
      • 2015-09-16
      • 1970-01-01
      相关资源
      最近更新 更多