質問編集履歴
1
試したことに追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -76,18 +76,31 @@
|
|
76
76
|
```
|
77
77
|
|
78
78
|
### 試したこと
|
79
|
-
|
79
|
+
上記ソースコードのsql, params変数の箇所を下記のように修正すると正常にインサートされます。
|
80
80
|
```python
|
81
|
+
# sqlはNOT EXISTSを使わない形
|
81
82
|
sql = f"""
|
82
83
|
INSERT INTO {SCHEMA}.USER
|
83
84
|
VALUES %s;
|
84
85
|
"""
|
86
|
+
# paramsはUUID型から文字列型に変更
|
85
87
|
params = [
|
86
88
|
(str(uuid.uuid4()), 'test1'),
|
87
|
-
(str(uuid.uuid4()),
|
89
|
+
(str(uuid.uuid4()), ’test2’)
|
88
90
|
]
|
89
91
|
```
|
90
|
-
NOT EXISTSを使うSQLだと
|
92
|
+
下記のようなNOT EXISTSを使うSQLだと、
|
93
|
+
```python
|
94
|
+
sql = f"""
|
95
|
+
INSERT INTO {SCHEMA}.USER
|
96
|
+
SELECT v.id, v.name
|
97
|
+
FROM (VALUES %s) AS v(id, name)
|
98
|
+
WHERE NOT EXISTS (
|
99
|
+
SELECT 1 FROM {SCHEMA}.USER WHERE name = v.name
|
100
|
+
);
|
101
|
+
"""
|
102
|
+
```
|
103
|
+
下記のようなエラーになります。
|
91
104
|
```
|
92
105
|
---------------------------------------------------------------------------
|
93
106
|
DatatypeMismatch Traceback (most recent call last)
|