如何使用python将不同数据库(mysql和postgres)的两个dataframe连接起来,并以csv文件的形式获得输出?

2024-10-02 00:39:58 发布

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

正如问题中提到的,我的任务是在本地连接不同数据库的两个数据帧(MySQL和PostgreSQL),并需要在CSV文件中获得输出(dataset)。让我告诉你我到目前为止在以下方面所做的工作:

  1. 使用mysql.connector.connect创建了连接(con)
  2. 同时,对于分别使用psycopg2的postgres
  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文件中获得输出

有时我会得到这个MySQL版本的You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax,我也看过文档……但是我没有得到一个关于我的问题的适当参考

我使用的是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() 

还有别的办法吗?。。。需要尽快做出快速反应。 谢谢


Tags: csvtofromreadsqlmysqlpostgresconn
2条回答

对于连接使用merge方法,对于写入使用to_csv方法。但是,如果您有大量数据,这可能会导致您的计算机内存不足

给你:

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

相关问题 更多 >

    热门问题