使用pandas在python中从excel文件上传用户详细信息到postgres数据库

2024-04-26 14:39:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python中的pandas将用户详细信息(用户名、电子邮件、密码)从.csv文件上载到postgres数据库。在生成数据帧之前一切都很好,但是一旦我运行了上载用户详细信息的代码,子字符串-@gmail.com网站从gres/get转换为小写。 这是我用django应用程序的pythonshell编写的代码-

>>>import sys
>>>from django.contrib.auth import authenticate
>>>from django.contrib.auth import get_user_model
>>>import pandas as pd

>>>User = get_user_model()

>>>df=pd.read_excel('set_A_results_748_web.xlsx',sheetname='Sheet1',parse_cols=(0,3,4))

在测向头()

Dataframe First 10 rows Output Screenshot

^{pr2}$

Postgres User Table Data Screenshot After Uploading

如输出(数据框df的前10行)所示,每个用户的email id都是根据excel文件中的数据,但是当我将它们上传到postgres DB中的auth_user表时,电子邮件的后半部分被转换成小写。在

示例:第6行(Dipak Shah)的电子邮件地址将存储为DIPAK.13ME57@gmail.com,而它应该按原样存储,即DIPAK.13ME57@GMAIL.COM。这在应用程序中造成了一个问题,因为用户的分数和其他详细信息都存储在另一个分数表中,我通过一个Kettle转换单独上传了这个表。因此,对于由于大小写不匹配而导致电子邮件不匹配的记录,分数表中没有数据。在

有什么想法我可能会出错,或者我可以做些什么来避免这个。任何一个我们将非常感谢您的帮助!在


Tags: 文件数据django代码用户importauthpandas
1条回答
网友
1楼 · 发布于 2024-04-26 14:39:08

这与postgres无关,当新用户is created时,django就是normalizing the email address,因为电子邮件地址的主机部分不区分大小写。名称部分是否区分大小写通常取决于邮件服务器。在

如果您真的需要使用电子邮件地址作为匹配条件,那么您还应该对其他地址应用相同的规范化。在

编辑:

这种规范化似乎只适用于create_user(),如果稍后使用user.email = 'SOMEBODY@EXAMPLE.ORG'设置电子邮件地址,则不会应用该规范化。但我不太相信这一点,这种不同的行为可能会被视为一个错误,并在将来的版本中加以纠正。在

相关问题 更多 >