回答編集履歴

3

補足

2018/02/14 03:16

投稿

umyu
umyu

スコア5846

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

追記

2018/02/14 03:16

投稿

umyu
umyu

スコア5846

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

追記

2018/02/14 03:14

投稿

umyu
umyu

スコア5846

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)