質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

520閲覧

テキストボックスに入った複数の値を、それぞれ区切ってMSAccessデータベースに追加したい

teddy1121

総合スコア44

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/04/06 08:44

実現したいこと

HTMLのテキストボックスに複数のIDが入るようにしたのですが、MSAccessのテーブルに追加しようとすると1つの文字列とみなされて1レコードしか追加できません。
()や空白、カンマなどで区切ってみましたがやはり1つとして認識されてしまいます。
それぞれのIDを別のレコードとしてテーブルに追加する方法はないでしょうか?
↓テキストボックス(今は空白で区切っています)
イメージ説明
↓Accessではこのように登録されます。
イメージ説明
↓このように登録したいです。
イメージ説明

該当のソースコード

views.py(python)

1 attId = request.POST['IDcolName'] #IDcolNameがテキストボックス名です 2 # Accessデータベースに接続します 3 conn_str = ( 4 r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};' 5 r'DBQ=C:\Users\〇〇\Desktop\sougoudb.accdb;' 6 ) 7 conn = pyodbc.connect(conn_str) 8 curs = conn.cursor() 9 curs.execute("INSERT INTO 英語(顧客ID) VALUES ('" + attId + "')") #これで追加はできますが、1つになってしまいます。 10 conn.commit() 11 curs.close 12 conn.close

試したこと

executemanyというものをネットで見つけ以下のように試しましたがエラーが出て理解できませんでした。

sql = "insert into 英語(顧客ID) values (?)"
curs.executemany(sql,"' + attId + '")

エラー(The second parameter to executemany must be a sequence, iterator, or generator.)

初歩的な内容なのかもしれませんが知識が足りず行き詰ってしまいました。
お助けいただけたら幸いです。
※情報不足などありましたらご指摘ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。
特定の区切り文字(,や|など適当なもの)で持ってきた配列をsplitで分けて(attId)、それをfor 変数 in attIdで回しました。
for IDlist in attIl:
curs.execute ("INSERT INTO 英語 (顧客ID) VALUES ('" + IDlist +"')")
conn.commit()
curs.close
conn.close
段落の調整も必要だったんですね。
勉強になりました。

投稿2022/04/09 08:27

teddy1121

総合スコア44

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問