如何使用 mysql 作为数据库在金字塔中设置登录系统来存储电子邮件和密码?

How do I set up a login system in pyramid using mysql as database to store email and password?

我已经完成了这个 http://docs.pylonsproject.org/projects/pyramid/en/latest/quick_tutorial/authentication.html 但它没有提供任何线索如何向其中添加数据库来存储电子邮件和密码?

快速教程的简介描述了它的用途和目标受众。身份验证和持久存储不在同一课中,而是在两个不同的课中。

您可以结合前面步骤中的知识(不推荐),或者尝试一下 SQLAlchemy + URL dispatch wiki tutorial,它涵盖了典型的 Web 应用程序,包括身份验证、授权、密码散列和永久存储在一个SQL 数据库。

但是请注意,它使用 SQLite,而不是 MySQL 作为其 SQL 数据库,因此您要么必须使用提供的数据库,要么将其换成您的数据库首选 SQL 数据库。

这里有一些关于从 SQLite 切换到 MySQL 的建议。在您的 development.ini (and/or production.ini) 文件中,将 SQLite 更改为 MySQL:

# sqlalchemy.url = sqlite:///%(here)s/MyProject.sqlite  [comment out or remove this line]
sqlalchemy.url = mysql://MySQLUsername:MySQLPassword@localhost/MySQLdbName

当然,您将需要一个 MySQL 数据库(上例中的 MySQLdbName),并且可能需要编辑其元数据的知识和权限,例如,添加名为 [=16 的字段=] 和 passwordhashusers table 或创建一个 users table 如果需要的话。

在您的 setup.py 文件中,您需要导入 mysql-python 模块。一个例子是:

requires = [
    'bcrypt',
    'pyramid',
    'pyramid_jinja2',
    'pyramid_debugtoolbar',
    'pyramid_tm',
    'SQLAlchemy',
    'transaction',
    'zope.sqlalchemy',
    'waitress',
    'mysql-python',
    ]

setup.py 中指定新模块后,请务必 运行 以下命令,以便您的项目识别新模块:

cd $VENV/MyPyramidProject
sudo $VENV/bin/pip install -e .

至此,您的 Pyramid 项目应该连接到 MySQL。现在开始学习 Pyramid 的细节(如果这是您选择的 ORM,则学习 SQLAlchemy)。教程中的许多建议,尤其是您的 SQLAlchemy + URL dispatch wiki tutorial,应该在与 SQLite 一起使用时起作用。