teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

皆さまのご回答を踏まえた修正を行いました。

2020/06/12 07:12

投稿

Shu0101
Shu0101

スコア14

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
  ```