pythoncgi在MySQL中的编程

pythoncgi在MySQL中的编程,python,cgi,Python,Cgi,我很难让sql插入查询正常工作。 我的课程Id当前是另一个表CourseMaster的外键。 显然CourseMaster上的所有信息都已输入 学生证表格的输入对我来说也是个问号。 我已经为hidId包含了隐藏表单类型。不确定这是否正确。 请告知 import mysql.connector import cgi import cgitb;cgitb.enable() import sys print "Content-Type: text/html\n\n" #connection of

我很难让sql插入查询正常工作。 我的课程Id当前是另一个表CourseMaster的外键。 显然CourseMaster上的所有信息都已输入

学生证表格的输入对我来说也是个问号。 我已经为hidId包含了隐藏表单类型。不确定这是否正确。 请告知

import mysql.connector
import cgi
import cgitb;cgitb.enable()
import sys


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

#connection of my database
db = mysql.connector.connect( user='root',password = 'root',
                             host = 'localhost' ,port='8889',database = 'StudentData')


cursor = db.cursor()


form = cgi.FieldStorage()

id=""

first_name = ""

last_name = ""

residential_address = ""

phone_no = ""

Gender = ""

Course_Id = ""

if form.has_key("hidId"):
    id=form["hidId"].value
elif form.has_key("id"):
    id=form["id"].value

if form.has_key("first_name"):
    first_name = form["first_name"].value
    print "<p>name</p>"
    print first_name
if form.has_key("last_name"):
    last_name = form["last_name"].value
    print "<p>name</p>"
    print last_name
if form.has_key("residential_address"):
    residential_address = form["residential_address"].value
    print "<p>residential_address</p>"
    print residential_address
if form.has_key("phone_no"):
    phone_no = form["phone_no"].value
    print "<p>phone_no</p>"
    print phone_no
if form.has_key("Gender"):
    Gender = form["Gender"].value
    print "<p>Gender</p>"
    print Gender
if form.has_key("Course_Id"):
    Course_Id = form["Course_Id"].value
    print "<p>Course_Id</p>"
    print Course_Id

# Insert Data into Table StudentMaster
cursor.execute('''INSERT INTO StudentMaster
                  (Student_Id,Student_FirstName,Student_LastName,Course_Id,Gender,Residential_Address,PhoneNo)
                  VALUES(%s,%s,%s,%s,%s,%s,%s)''',
                  (id,first_name,last_name,Course_Id,Gender,residential_address,phone_no))

cursor.lastrowid


db.commit()

cursor.close()
db.close()
导入mysql.connector
导入cgi
进口cgib;cgib.enable()
导入系统
打印“内容类型:text/html\n\n”
#连接我的数据库
db=mysql.connector.connect(user='root',password='root',
主机='localhost',端口='8889',数据库='StudentData')
cursor=db.cursor()
form=cgi.FieldStorage()
id=“”
first_name=“”
last_name=“”
住宅地址=”“
电话号码=“”
性别=“”
课程Id=“”
如果form.has_key(“hidId”):
id=形式[“hidId”]。值
elif表格有以下编号(“id”):
id=形式[“id”]。值
如果form.has_key(“first_name”):
first_name=形式[“first_name”]。值
打印“名称

” 打印名字 如果form.has_key(“姓氏”): 姓氏=形式[“姓氏”]。值 打印“名称

” 打印姓氏 如果表格有钥匙(“住址”): 居住地址=表格[“居住地址”]。值 打印“住宅地址” 打印住址 如果表格有密码(“电话号码”): 电话号码=表格[“电话号码”]。值 打印“电话号码” 打印电话号码 如果表格中有“性别”键: 性别=形式[“性别”]。值 打印“性别

” 印刷性别 如果表格上有“课程编号”: 课程Id=表格[“课程Id”]。值 打印“课程Id

” 打印课程号 #将数据插入表StudentMaster cursor.execute(“”)插入StudentMaster (学生Id、学生名、学生姓、课程Id、性别、住址、电话号码) 值(%s,%s,%s,%s,%s,%s,%s,%s,%s)“”, (身份证、名、姓、课程号、性别、住址、电话号码) cursor.lastrowid db.commit() cursor.close() db.close()
**这是我的错误信息

**<class 'mysql.connector.errors.IntegrityError'>: 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`studentdata`.`studentmaster`, CONSTRAINT `Course_ID Foreign` FOREIGN KEY (`Course_Id`) REFERENCES `CourseMaster` (`Course_Id`)) 
      args = (1452, '1452 (23000): Cannot add or update a child row: ...rse_Id`) REFERENCES `CourseMaster` (`Course_Id`))', u'23000') 
      errno = 1452 
      message = '' 
      msg = u'Cannot add or update a child row: a foreign key ...rse_Id`) REFERENCES `CourseMaster` (`Course_Id`))' 
      sqlstate = u'23000'****
**:1452(23000):无法添加或更新子行:外键约束失败(`studentdata`.`studentmaster`,约束`Course\u ID foreign`外键(`Course\u ID`)引用`CourseMaster`(`Course\u ID`)
args=(1452,'1452(23000):无法添加或更新子行:…rse_Id`)引用'CourseMaster`('Course_Id`)),u'23000')
errno=1452
消息=“”
msg=u'无法添加或更新子行:外键…rse_Id`)引用'CourseMaster`('Course_Id`)'
sqlstate=u'23000'****

如果您的ID在
CourseMaster
中设置正确,则可能是类型问题。 检查表单中的值是否应从字符串转换为数字。 试试像这样的东西

Course_Id = int(Course_Id)
在执行查询之前