我正在使用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转换单独上传了这个表。因此,对于由于大小写不匹配而导致电子邮件不匹配的记录,分数表中没有数据。在
有什么想法我可能会出错,或者我可以做些什么来避免这个。任何一个我们将非常感谢您的帮助!在
这与postgres无关,当新用户is created时,django就是normalizing the email address,因为电子邮件地址的主机部分不区分大小写。名称部分是否区分大小写通常取决于邮件服务器。在
如果您真的需要使用电子邮件地址作为匹配条件,那么您还应该对其他地址应用相同的规范化。在
编辑:
这种规范化似乎只适用于
create_user()
,如果稍后使用user.email = 'SOMEBODY@EXAMPLE.ORG'
设置电子邮件地址,则不会应用该规范化。但我不太相信这一点,这种不同的行为可能会被视为一个错误,并在将来的版本中加以纠正。在相关问题 更多 >
编程相关推荐