0

我有一个包含名字、姓氏、年龄和性别的表格。我正在使用 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% 清楚你在问什么,但我会猜测一下。

您必须在数据库中创建一个表,然后才能插入它。

如果您的 Python 脚本每次运行时都在与一个全新的数据库通信,那么它需要一个CREATE TABLE语句。

如果您的 Python 脚本可能正在与一个全新的数据库通信,但通常会与一个已经存在的数据库通信,那么您可以使用CREATE TABLE IF NOT EXISTS.

但是,除了在玩具学习项目中,这两种情况都很少见。通常,您创建数据库一次,然后编写连接到它的 Python 脚本并假设它已经创建。在这种情况下,您的表单处理程序中将没有CREATE TABLE语句。

If you're asking about inserting multiple values in a single INSERT statement… normally, you won't be inserting hard-coded values like 'Neeraj', but rather values that you get dynamically (e.g., from the web form). So you will be using parameterized SQL statements like this:

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

In that case, if you have, say, a list of 4-tuples, each representing a person, and you want to insert all of them, you do that not by putting multiple copies of the parameter lists in the SQL statement, but by putting a single parameter list, and using the executemany function:

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

您只需要创建一次表。您可以使用 mysql CLI 工具、phpmyadmin、python/MySQLdb 或其他方法来执行此操作。

CREATE TABLE PERSONPERSON如果表已经存在,将引发错误。如果您想在 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 回答