0

FirstName、Lastname、Age、Gender を含むフォームがあります。MySQL データベースを使用しています。MySQl db を使用しているときに、テーブルを作成する必要がありますか?単一の pythonic スクリプトで挿入操作を行いますか?

例えば ​​:

#!/usr/bin/python

import MySQLdb

db = MySQLdb.connect("localhost", "usename", "password", "TESTDB")

cursor = db.cursor()
cursor.execute ( """
    CREATE TABLE PERSON 
    ( 
     F_NAME CHAR(20) NOT NULL, 
     L_NAME CHAR(20), 
     AGE INT, 
     GENDER CHAR(4)
    )
 """)
cursor.execute( """
    INSERT INTO PERSON (F_NAME, L_NAME, AGE, GENDER)
    VALUES
        ('Neeraj','Lad','22','Male'),
        ('Vivek','Pal','24','Male')  
 """)
print cursor.rowcount

編集されたコード:

#!/usr/bin/python

import MySQLdb
import cgi

print "Content-type: text/html\n"

form = cgi.FieldStorage()
f_Name = form.getvalue('firstname', '')
l_Name = form.getvalue('lastname', '')
age = form.getvalue('age', 0)
gender = form.getvalue('gender', '')

db = MySQLdb.connect(host="", user="", password="", db="")

cursor = db.cursor()

sql =  "INSERT INTO PERSON (F_NAME, L_NAME, Age, Gender) VALUES (%s, %s, %s, %s)" %(f_name, l_name, age, gender) 
cursor.execute(sql)
db.commit()
db.close()
4

2 に答える 2

2

私はあなたが何を求めているのか 100% 明確ではありませんが、推測してみましょう。

データベースに挿入する前に、データベースにテーブルを 1 回だけ作成する必要があります。

Python スクリプトが実行するたびに新しいデータベースと通信する場合は、CREATE TABLEステートメントが必要です。

Python スクリプト新しいデータベースと通信する可能性があるが、通常は既存のデータベースと通信する場合は、CREATE TABLE IF NOT EXISTS.

しかし、おもちゃの学習プロジェクトを除いて、これらの両方はまれです. 通常、データベースを一度作成してから、データベースに接続する Python スクリプトを作成し、既に作成されていると想定します。その場合、CREATE TABLEフォーム ハンドラーにステートメントはありません。

1 つのステートメントに複数の値を挿入することについて質問している場合はINSERT、通常、 のようなハードコードされた値を挿入するの'Neeraj'ではなく、動的に (たとえば、Web フォームから) 取得する値を挿入します。したがって、次のようなパラメーター化された SQL ステートメントを使用します。

cursor.execute("""
    INSERT INTO PERSON (F_NAME, L_NAME, AGE, GENDER)
    VALUES (%s, %s, %s, %s)
""", (f_name, l_name, age, gender))

その場合、たとえば、それぞれが人物を表す 4 つのタプルのリストがあり、それらすべてを挿入したい場合、SQL ステートメントにパラメーター リストの複数のコピーを配置するのではなく、単一のパラメーター リストを配置し、次のexecutemany関数を使用します。

cursor.execute("""
    INSERT INTO PERSON (F_NAME, L_NAME, AGE, GENDER)
    VALUES (%s, %s, %s, %s)
""", list_of_people)
于 2013-11-11T09:50:55.640 に答える
1

テーブルを作成する必要があるのは 1 回だけです。これは、mysql CLI ツール、phpmyadmin、python/MySQLdb、またはその他の方法を使用して行うことができます。

CREATE TABLE PERSONテーブルPERSONが既に存在する場合、エラーが発生します。Python スクリプトでそれを作成する方法が必要な場合は、 を使用してください。IF NOT EXISTSこれにより、プログラムの後続の実行でエラーが発生しなくなります。

cursor.execute ( """
    CREATE TABLE IF NOT EXISTS PERSON 
    ( 
     F_NAME CHAR(20) NOT NULL, 
     L_NAME CHAR(20), 
     AGE INT, 
     GENDER CHAR(4)
    )
 """)
于 2013-11-11T09:50:46.380 に答える