mysql ssl连接错误_从Django连接到RDS MySQL时出现SSL连接错误

我正在尝试使用RDS实例作为数据库后端在Heroku上部署Django应用程序.一切正常,直到我尝试加密连接,然后我收到此错误:

OperationalError at /path/

(2026, 'SSL connection error')

这是设置:

>标准Django应用程序

>具有安全组的MySQL RDS实例允许来自所有IP地址的连接

> MySQL用户设置为允许来自任何主机的连接

>亚马逊的pem已经下载并在Django设置中指定

在Heroku上:

DATABASE_URL: mysql2://username:password@instance.us-east-1.rds.amazonaws.com:3306/name_staging?sslca=path/to/mysql-ssl-ca-cert.pem

在Django设置中:

DATABASES = {

'default': dj_database_url.config()

}

DATABASES['default']['OPTIONS'] = {'ssl': {'ca': 'mysql-ssl-ca-cert.pem'}}`

我已经尝试过搜索并且已经阅读了很多关于在Rails中设置这种类型的环境的知识,但是关于使用Django进行此操作的文档很轻微到不存在.

有没有人成功地部署了类似的设置或有没有人有如何解决这个错误的想法?

更新:

通过cli连接以及在python解释器中使用MySQLdb直接连接.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将MySQLDjango连接起来,可以使用Django的ORM(对象关系映射)框架。对于协同过滤算法来说,你需要在数据库中存储用户和产品的评分数据。以下是连接MySQLDjango的步骤: 1. 安装MySQL数据库和Python的MySQL驱动程序。你可以使用pip来安装mysqlclient,它是Python的MySQL驱动程序。命令如下: ```bash pip install mysqlclient ``` 2. 在Django项目的settings.py文件中配置数据库连接。示例代码如下: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'database_name', 'USER': 'database_user', 'PASSWORD': 'database_password', 'HOST': 'localhost', 'PORT': '3306', } } ``` 3. 为用户和产品评分数据创建模型。在Django项目的models.py文件中添加以下代码: ```python from django.db import models class User(models.Model): name = models.CharField(max_length=100) class Product(models.Model): name = models.CharField(max_length=100) class Rating(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) product = models.ForeignKey(Product, on_delete=models.CASCADE) rating = models.FloatField() ``` 4. 运行数据库迁移命令,以便将模型同步到MySQL数据库中。命令如下: ```bash python manage.py makemigrations python manage.py migrate ``` 5. 在Django视图中使用协同过滤算法来推荐产品。你可以使用Python的pandas和scikit-learn库来实现协同过滤算法。以下是示例代码: ```python import pandas as pd from sklearn.metrics.pairwise import cosine_similarity def recommend_products(user_id): # 获取所有用户和产品的评分数据 ratings = Rating.objects.all() ratings_df = pd.DataFrame(list(ratings.values())) # 将评分数据转换为用户-产品评分矩阵 ratings_matrix = ratings_df.pivot_table(index='user_id', columns='product_id', values='rating') # 计算用户之间的相似度 user_similarity = cosine_similarity(ratings_matrix) # 找到与目标用户最相似的用户 target_user_index = ratings_matrix.index.get_loc(user_id) user_similarities = list(enumerate(user_similarity[target_user_index])) sorted_similarities = sorted(user_similarities, key=lambda x: x[1], reverse=True) most_similar_user_index = sorted_similarities[1][0] # 找到目标用户没有评分过的产品 target_user_ratings = ratings_matrix.iloc[target_user_index] unrated_products = target_user_ratings[target_user_ratings.isna()].index.tolist() # 找到最相似用户对于未评分产品的评分 most_similar_user_ratings = ratings_matrix.iloc[most_similar_user_index] unrated_product_ratings = most_similar_user_ratings[most_similar_user_ratings.index.isin(unrated_products)] # 对于每个未评分产品,计算目标用户可能的评分 predicted_ratings = [] for product_id, rating in unrated_product_ratings.iteritems(): similarity = user_similarity[target_user_index][most_similar_user_index] weighted_rating_sum = most_similar_user_ratings[product_id] * similarity similarity_sum = similarity predicted_rating = weighted_rating_sum / similarity_sum predicted_ratings.append({'product_id': product_id, 'predicted_rating': predicted_rating}) # 根据预测评分将产品排序,并返回推荐的产品 predicted_ratings_df = pd.DataFrame(predicted_ratings) recommended_products_df = predicted_ratings_df.sort_values(by='predicted_rating', ascending=False).head(10) recommended_products = Product.objects.filter(id__in=list(recommended_products_df['product_id'])) return recommended_products ``` 以上代码根据用户的评分数据,找到与目标用户最相似的用户,然后计算目标用户对于未评分产品的可能评分,并将产品按照预测评分排序,返回前10个推荐的产品。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值