Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查询维护外键关系的CSV文件?这可能吗?_Python_Mysql_Csv_Python 3.x_Pandas - Fatal编程技术网

Python 查询维护外键关系的CSV文件?这可能吗?

Python 查询维护外键关系的CSV文件?这可能吗?,python,mysql,csv,python-3.x,pandas,Python,Mysql,Csv,Python 3.x,Pandas,我有一堆表,它们已导出为CSV文件。它们维护一些主键/外键关系,我基本上希望使用它们创建一个新视图(一个新的CSV文件) 数据库/csv可以简化为: Replys.csv -PostId -ReplyId -ReplyText Users.csv -ReplyId -UserId -UserText 其中,ReplyId是Replys.csv中的主键,Users.csv中的外键 对于每个用户查找ReplyId:Users.csv->Replys.csv:ReplyId 因此,请打印每个用户

我有一堆表,它们已导出为CSV文件。它们维护一些主键/外键关系,我基本上希望使用它们创建一个新视图(一个新的CSV文件)

数据库/csv可以简化为:

Replys.csv
-PostId
-ReplyId 
-ReplyText

Users.csv
-ReplyId
-UserId
-UserText
其中,
ReplyId
Replys.csv
中的主键,
Users.csv
中的外键

对于每个
用户
查找
ReplyId:Users.csv->Replys.csv:ReplyId

因此,请打印每个用户的ReplyId和ReplyText

User | ReplyId | ReplyText
在SQL中,我相信它将类似于:

SELECT ReplyId, ReplyText
FROM Users, Replys
WHERE Users.ReplyId = Replys.ReplyID
如何仅使用CSV文件来执行此操作?可能吗


编辑:这个问题很让人困惑,但我想我已经解释清楚了。如果您有任何进一步的问题/澄清,请在回复中提问:)。

熊猫数据帧尝试为您提供类似SQL的操作
pd.read_csv
两个csv,然后执行类似于
pandas.merge(users,reply,on='reply\u id')
的操作


数据帧尝试为您提供类似SQL的操作
pd.read_csv
两个csv,然后执行类似于
pandas.merge(users,reply,on='reply\u id')
的操作


您可以执行
内部
合并:

replys.merge(users, on='reply_id', how='left')
假设
replys
来自replys.csv,
users
来自users.csv:

replys.merge(users, on='reply_id')
对于多对一关系,您可以执行
left
合并:

replys.merge(users, on='reply_id', how='left')
如果您来自美国,文档中有一个有用的部分

你可以这样读CSV:

replys = pd.read_csv('Replys.csv')
users = pd.read_csv('Users.csv')

以上假设CSV中的第一行包含标题行,并且以逗号分隔

您可以执行
内部
合并:

replys.merge(users, on='reply_id', how='left')
假设
replys
来自replys.csv,
users
来自users.csv:

replys.merge(users, on='reply_id')
对于多对一关系,您可以执行
left
合并:

replys.merge(users, on='reply_id', how='left')
如果您来自美国,文档中有一个有用的部分

你可以这样读CSV:

replys = pd.read_csv('Replys.csv')
users = pd.read_csv('Users.csv')

以上假设CSV中的第一行包含一个标题行,并且以逗号分隔。首先,您将不同的表导入数据库,而不是多个数据库。这似乎是混淆的第一点。您应该能够将csv文件表直接导入数据库。完成所描述的表关系后,您应该能够通过执行
内部联接来获取必要的数据:

# User | ReplyId | ReplyText
SELECT UserId, ReplyId, ReplyText FROM users INNER JOIN Replys USING (ReplyId)

首先,将不同的表导入数据库,而不是多个数据库。这似乎是混淆的第一点。您应该能够将csv文件表直接导入数据库。完成所描述的表关系后,您应该能够通过执行
内部联接来获取必要的数据:

# User | ReplyId | ReplyText
SELECT UserId, ReplyId, ReplyText FROM users INNER JOIN Replys USING (ReplyId)

2个csv之间是否存在1-1关系,或者回复到用户之间是否存在多对一关系,这正是我想要的expect@EdChum回复对用户来说是多对一的,你是对的:)我也找了这个,并决定,虽然熊猫以间接的方式支持这个,如果有一个专用的库来定义可用于csv文件(或excel工作表..甚至SQLite和MDB)的多表模式,那就太好了。。。所以我建了一个图书馆就是为了这个!我称之为ticdat,它将很快在PyPi上提供。如果你想测试,请告诉我!2个csv之间是否存在1-1关系,或者回复到用户之间是否存在多对一关系,这正是我想要的expect@EdChum回复对用户来说是多对一的,你是对的:)我也找了这个,并决定,虽然熊猫以间接的方式支持这个,如果有一个专用的库来定义可用于csv文件(或excel工作表..甚至SQLite和MDB)的多表模式,那就太好了。。。所以我建了一个图书馆就是为了这个!我称之为ticdat,它将很快在PyPi上提供。如果你想测试,请告诉我!