pythoncgi在MySQL中的编程
我很难让sql插入查询正常工作。 我的课程Id当前是另一个表CourseMaster的外键。 显然CourseMaster上的所有信息都已输入 学生证表格的输入对我来说也是个问号。 我已经为hidId包含了隐藏表单类型。不确定这是否正确。 请告知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
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)
在执行查询之前