import mysql.connector as mycfrom mysql.connector import Errordef new(): idtype=input("Type of Id proof present=") idno=input("Identification number=") name=input("Name of patient=") age=input("Age=") sex=input("Sex=") address=input("Address=") contactno=int(input("Contact Number=")) date=input("Date =") doccons=input("Doctor consulted=") reason=input("Consultation reason=") dept=input("Department of doctor consulted=") aller=input("Medical Allergies (if any)=") insu=input("Availing Insurance=") temp=input("Temperature of patient(degree celsius)=") fees=int(input("Fees=")) if True: db = myc.connect(host='localhost', database='patients', user='root', password='root') mc = db.cursor() query = """INSERT INTO patient ( IDTYPE,IDNO,NAME,AGE,SEX,ADDRESS,CONTACT_NO,DATE,DOCTOR_CONSULTED,CONSULTATION_REASON,DEPARTMENT,ALLERGIES,INSURANCE,TEMPERATURE,FEES) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """ recordTuple = (idtype,idno,name,age,sex,address,contactno,date,doccons,reason,dept,aller,insu,temp,fees) mc.execute(query, recordTuple) mc.execute("CREATE TABLE "+name+" (NAME VARCHAR(100),CONSULTED_DATE DATE,CONSULTATION_REASON VARCHAR(100),CONSULTED_DOCTOR VARCHAR(100),FEES VARCHAR(100))") qu="""INSERT INTO """+name+""" (NAME ,CONSULTED_DATE ,CONSULTATION_REASON ,CONSULTED_DOCTOR ,FEES ) VALUES(%s, %s, %s, %s, %s)""" retu=(name,date,reason,doccons,fees) mc.execute(qu,retu) db.commit() print("Record inserted successfully into Patient table") elif myc.Error==error: print("Failed to insert into MySQL table {}".format(error))这是我为学校项目编写的代码。这是库中的一个模块。问题是:当我这样运行模块时,它只会要求插入一条记录,但是当我在另一个程序中调用该模块时,它会要求插入两条记录。但我只想给出一个记录。任何答案将不胜感激。谢谢。
1 回答
慕仙森
TA贡献1827条经验 获得超7个赞
当您从另一个模块加载此模块然后调用 时new()
,您忘记了模块本身包含对new()
作为最后一行的调用。new()
因此,总共进行了两次调用。你想修改你的模块以替换最后一行:
if __name__ == '__main__': new()
当您使用 Python 命令运行该文件时,__name__
将是“__main__”,因此new()
将被调用。但是当它从另一个程序或模块导入时,上面的 if 条件将为 False 。
添加回答
举报
0/150
提交
取消