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條經驗 獲得超8個贊
當您從另一個模塊加載此模塊然后調用 時new()
,您忘記了模塊本身包含對new()
作為最后一行的調用。new()
因此,總共進行了兩次調用。你想修改你的模塊以替換最后一行:
if __name__ == '__main__': new()
當您使用 Python 命令運行該文件時,__name__
將是“__main__”,因此new()
將被調用。但是當它從另一個程序或模塊導入時,上面的 if 條件將為 False 。
添加回答
舉報
0/150
提交
取消