2017-07-08 4 views
0

DjangoとPythonでprepared statementクエリを使用して、sqlite3 dbにフォームデータを挿入する必要があります。私は以下のコードを説明しています。DjangoとPythonでプリペアドステートメントクエリを使用してデータベースにデータを挿入する方法

models.py:ここ

class Meeting(models.Model): 
    """In this class the columns for Meeting table has declared""" 
    room_name = models.CharField(max_length=200) 
    from_date = models.DateTimeField(default=datetime.now, blank=True) 
    to_date = models.DateTimeField(default=datetime.now, blank=True) 
    no_seat = models.CharField(max_length=200) 
    projector = models.CharField(max_length=200) 
    video = models.CharField(max_length=200) 
    created_date = models.DateTimeField(default=datetime.now, blank=True) 

私はすでに移行してテーブルを作成しました。私は以下の私のviews.pyを説明しています。

import sqlite3 
def insert(request): 

    """ This function helps to insert all booking data into database """ 
    conn = sqlite3.connect("db.sqlite3") 
    cursor = conn.cursor() 
    if request.method == 'POST': 
     location_name = request.POST.get('lname') 
     rname = request.POST.get('rname') 
     seat = request.POST.get('seat') 
     projector = request.POST.get('projector') 
     video = request.POST.get('video') 
     location_name = location_name[0:255] 
     rname = rname[0:255] 
     seat = seat[0:10] 
     from_date = request.POST.get('from_date') 
     to_date = request.POST.get('from_date') 

ここでは、準備された文のクエリを実行することによってすべてのデータをデータベースに保存する必要があります。

+0

これは割り当ての対象ですか?なぜあなたは準備文を使用する必要がありますか? –

答えて

1

PythonのSQLiteライブラリには、プリペアドステートメントオブジェクトが用意されていませんが、パラメータ化されたクエリを使用したり、複数のパラメータセットを提供することができます。

values_to_insert = [(location_name,rname,........other_fields)] 

cursor.execute(""" 
    INSERT INTO some_table ('location_name', 'rname','..... other_fields') 
    VALUES (?, ?, ?, ?, total fields = total ? marks)""", values_to_insert) 
+0

私はこのような 'cursor.execute(INSERT INTO booking_meeting VALUES(?、?、?、?、?、?、?、?、?) 'のようにしています。(None、rname、from_date、to_date、 video、now、location_name)) 'ここで私はこの例外を受け取りました。例外値:\t ローカル変数 'location_name'が代入前に参照されています。 – satya

+0

この文をifメソッド – Exprator

+0

の中に入れる必要があります。 – satya

関連する問題