回答編集履歴
3
補足
test
CHANGED
@@ -160,7 +160,7 @@
|
|
160
160
|
|
161
161
|
OperationalError:"?"近くに構文エラーがあります。
|
162
162
|
|
163
|
-
今回の場合はCREATE TABLE ? ←こ
|
163
|
+
今回の場合は`CREATE TABLE ?` ←この?マークが構文エラーの原因です。
|
164
164
|
|
165
165
|
|
166
166
|
|
@@ -198,11 +198,11 @@
|
|
198
198
|
|
199
199
|
■余談
|
200
200
|
|
201
|
-
1,変数1~6みたいな連番変数は使用目的が分かりづらいため、listやdictで管理するようにするか、個々の名前を正しく付けてくださいな。
|
201
|
+
1,変数1~6みたいな連番変数は使用目的が分かりづらいため、`list`や`dict`で管理するようにするか、個々の名前を正しく付けてくださいな。
|
202
|
-
|
203
|
-
|
204
|
-
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
-
2,今回の件とかが特にそうですが、cur.executeで実行するのはSQL文字列なため、実行エラーが発生したときはSQLの構文エラーになっていないか確認してくださいな。
|
205
|
+
2,今回の件とかが特にそうですが、`cur.execute`で実行するのはSQL文字列なため、実行エラーが発生したときはprint関数で作成したsqlを出力して、SQLの構文エラーになっていないか確認してくださいな。
|
206
206
|
|
207
207
|
|
208
208
|
|
2
追記
test
CHANGED
@@ -143,3 +143,75 @@
|
|
143
143
|
[CREATE TABLE](https://www.sqlite.org/lang_createtable.html)
|
144
144
|
|
145
145
|
[Pythonでsqlite](https://qiita.com/mas9612/items/a881e9f14d20ee1c0703)
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
---
|
150
|
+
|
151
|
+
2018/02/14追加
|
152
|
+
|
153
|
+
> cur.execute('CREATE TABLE ? (tablename_new)(''変数1'', ''変数2'',''変数3'',''変数4'', ''変数5'', ''変数6'')')
|
154
|
+
|
155
|
+
OperationalError: near "?": syntax error
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
■翻訳
|
160
|
+
|
161
|
+
OperationalError:"?"近くに構文エラーがあります。
|
162
|
+
|
163
|
+
今回の場合はCREATE TABLE ? ←これが原因です。
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
tablename_new の値と変数1~変数6の値が質問文には無いので推測で回答しますが、以下のような形になります。
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
```Python
|
172
|
+
|
173
|
+
tablename_new = 'sample_new'
|
174
|
+
|
175
|
+
変数1 ="item"
|
176
|
+
|
177
|
+
変数2 = "cost"
|
178
|
+
|
179
|
+
変数3 = "price"
|
180
|
+
|
181
|
+
変数4 = "amount"
|
182
|
+
|
183
|
+
変数5 = "ctime"
|
184
|
+
|
185
|
+
変数6 = "vender"
|
186
|
+
|
187
|
+
column_names = ", ".join((変数1, 変数2, 変数3, 変数4, 変数5, 変数6))
|
188
|
+
|
189
|
+
sql = f"CREATE TABLE {tablename_new} ({column_names})"
|
190
|
+
|
191
|
+
print(sql)
|
192
|
+
|
193
|
+
cur.execute(sql)
|
194
|
+
|
195
|
+
```
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
■余談
|
200
|
+
|
201
|
+
1,変数1~6みたいな連番変数は使用目的が分かりづらいため、listやdictで管理するようにするか、個々の名前を正しく付けてくださいな。
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
2,今回の件とかが特にそうですが、cur.executeで実行するのはSQL文字列なため、実行エラーが発生したときはSQLの構文エラーになっていないか確認してくださいな。
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
3,質問する時は
|
210
|
+
|
211
|
+
3-1,再現する手順、
|
212
|
+
|
213
|
+
3-2,期待されること、そして
|
214
|
+
|
215
|
+
3-3,その代わりに観察されたこと。
|
216
|
+
|
217
|
+
この3つを意識して質問して頂けると、回答しやすいです。
|
1
追記
test
CHANGED
@@ -133,3 +133,13 @@
|
|
133
133
|
1,変数から値を生成するとのことなので、INSERTやUPDATEする時は`SQL Injection`を回避するために`bindパラメータ`を使用してくださいな。
|
134
134
|
|
135
135
|
2,SQLiteのデータ確認には[DB Browser for SQLite](http://sqlitebrowser.org/)が便利です。
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
■参考情報
|
140
|
+
|
141
|
+
[sqlite3](https://docs.python.jp/3/library/sqlite3.html)
|
142
|
+
|
143
|
+
[CREATE TABLE](https://www.sqlite.org/lang_createtable.html)
|
144
|
+
|
145
|
+
[Pythonでsqlite](https://qiita.com/mas9612/items/a881e9f14d20ee1c0703)
|