Python 如何更快地从pandas查询到postgresql
我有一个CSV文件,我必须搜索数据库中是否有行。 例如,从我的CSV中,我必须使用姓名、姓氏和生日在DB中查找大学名称。 例如: 从这个图像示例中,我应该发现XXX YYY在大学1学习,AAA BBB在大学2学习,TTT YYY没有结果 我的解决方案是跟随,这是非常缓慢的。CSV文件有50k行和40M数据库 我使用PythonPandas,读取CSV文件,然后创建一个新的列,包含姓名、姓氏和生日。来自新联合收割机列的示例数据:“XXX+YYYY+29-05-1953” 然后,我从新的combine列中获取所有可能数据的列表。 假设列表为:Python 如何更快地从pandas查询到postgresql,python,sql,pandas,postgresql,Python,Sql,Pandas,Postgresql,我有一个CSV文件,我必须搜索数据库中是否有行。 例如,从我的CSV中,我必须使用姓名、姓氏和生日在DB中查找大学名称。 例如: 从这个图像示例中,我应该发现XXX YYY在大学1学习,AAA BBB在大学2学习,TTT YYY没有结果 我的解决方案是跟随,这是非常缓慢的。CSV文件有50k行和40M数据库 我使用PythonPandas,读取CSV文件,然后创建一个新的列,包含姓名、姓氏和生日。来自新联合收割机列的示例数据:“XXX+YYYY+29-05-1953” 然后,我从新的comb
combine\u list=data[new\u column].tolist()
现在我提出了一个惊人的问题:))
您能告诉我如何更快地找到它们吗?您可以将列作为元组查询:
选择concat(姓名“+”,姓氏“+”,出生日期)作为大学的新列
从db_表
其中(('XXX','YYY','29-05-53')中的(姓名,姓氏,出生日期),
('AAA','BBB','01-01-1997'),…)
这应该比查询连接的值更快,尤其是当WHERE
子句中的列上有索引时
query = Select concat(name ,'+',surname,'+',birthdate) as new_column, university
from db_table where name is not NULL and surname is not NULL and birthdate is not NULL
and concat(name ,'+',surname,'+',birthdate) in {tuple(combine_list)}"