首页 > 解决方案 > 如何连接不同数据库(mysql和postgres)的两个数据框并使用python将输出作为csv文件?

问题描述

如问题中所述,我的任务是在本地连接不同数据库(MySQL 和 PostgreSQL)的两个数据框,并且需要在 CSV 文件中获取输出(数据集)。让我告诉你到目前为止我在下面做了什么:

  1. 使用创建连接(con)mysql.connector.connect
  2. 同时对于 postgrespsycopg2单独使用。
  3. df1 = pd.read_sql(sql='SELECT * FROM mydatabase.Empl_det', con=conn).to_csv(r'C:\Users\Aaru\Documents\Empl_det1.csv', index=False)在这样做之前,我已经在 MySQL 和 postgres 中创建了一个表......结果我得到了 csv 形式的输出。
  4. 分别与 PostgreSQL 类似df2 = pd.read_sql(sql='SELECT * FROM postgres.public.salary_details', con=conn).to_csv(r'C:\Users\Aaru\Documents\Emp_sal.csv', index=False)
  5. 现在问题是我需要基于公共列连接这两个数据框并在 CSV 文件中获得输出。

有时我曾经获得You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax过这个 MySQL 版本,并且我也浏览了文档......但我没有得到关于我的问题的正确参考。

我正在使用 MySQL 8.0.21 版本和 PostgreSQL 10。任何人都可以帮我带出加入吗?希望上面说的对答案有所帮助。非常感谢提前!!

还有一个问题:是否可以这样做然后合并?

   import pandas as pd 
   import mysql.connector
   import psycopg2

   conn = mysql.connector.connect(host="localhost",
                               user="user",
                               password="mypassword",
                               database="mydatabase"
                               )
mycursor_sql = conn.cursor()

con = psycopg2.connect(
    database="postgres", user="postgres", password="mypassword", host="localhost", port=5432)

cursor = con.cursor()

df1 = pd.read_sql(sql='SELECT * FROM mydatabase.Empl_det', con=conn).to_csv(
    r'C:\Users\Aaru\Documents\Empl_det1.csv', index=False)
df2 = pd.read_sql(sql='SELECT * FROM postgres.public.salary_details', con=conn).to_csv(
    r'C:\Users\Aaru\Documents\Emp_sal1.csv', index=False)

merged_df = df1.merge(df2, on='id')
merged_df.to_csv('join.csv')
print("Success")
conn.commit()
conn.close() 

还有其他方法吗?... 需要尽快回复。谢谢

标签: pythonmysqlpandaspostgresqlcsv

解决方案


干得好:

merged_df = df1.merge(df2, on='id')
merged_df.to_csv('filename.csv')

推荐阅读