質問編集履歴
1
皆さまのご回答を踏まえた修正を行いました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
Python上でCSVファイルを読み込み、SQLite3にデータベースを作成しています。
|
4
4
|
その際、重複した行を削除しようとしているのですが、以下のSelect Distinct(変数2つ)ではうまくいきません。
|
5
5
|
読み込むCSVは毎日更新されるので、Primary Keyによる制限をかけない方針です。
|
6
|
-
(制限をかけると、CSVファイルそのものが読み込まれないという理解です。)
|
6
|
+
~~(制限をかけると、CSVファイルそのものが読み込まれないという理解です。)~~
|
7
|
+
←理解が間違っておりました。
|
7
8
|
初めてSQLを使ったため、的外れな質問であれば恐縮です。
|
8
9
|
よろしくお願いいたします。
|
9
10
|
|
@@ -14,9 +15,33 @@
|
|
14
15
|
sql = """
|
15
16
|
SELECT
|
16
17
|
DISTINCT `column_name1`,
|
17
|
-
DISTINCT `column_name2`
|
18
|
+
~~DISTINCT~~ `column_name2`
|
18
19
|
FROM
|
19
20
|
'table_name'
|
20
21
|
"""
|
21
22
|
conn.execute(sql)
|
23
|
+
```
|
24
|
+
|
25
|
+
### 【追記】
|
26
|
+
・CSVはForループで順次読み込まれます
|
27
|
+
・重複を許してSQLに格納したのち、重複したものを消す手法は試しましたが、Lockされてしまい断念しました。
|
28
|
+
|
29
|
+
### 【追記】該当のソースコード
|
30
|
+
|
31
|
+
```Python3
|
32
|
+
import sqlite3
|
33
|
+
db_file_name = database_name
|
34
|
+
conn = sqlite3.connect(db_file_name)
|
35
|
+
sql1 = """
|
36
|
+
delete from table_name
|
37
|
+
where rowid not in
|
38
|
+
(
|
39
|
+
select min(rowid)
|
40
|
+
from prices
|
41
|
+
group by
|
42
|
+
column_name1
|
43
|
+
, column_name2
|
44
|
+
)
|
45
|
+
"""
|
46
|
+
conn.execute(sql1)
|
22
47
|
```
|