Maison > Questions et réponses > le corps du texte
Python 4.3.0
définit une classe pour faire fonctionner la base de données locale, puis définit deux fonctions pour importer les deux tables correspondantes.
Ce qui est étrange, c'est que la première fonction input_HA() peut être utilisée et que le formulaire est importé avec succès, mais la deuxième input_ImpactList() ne fonctionne pas
Quelqu'un peut-il m'aider ? Je suis un Python autodidacte novice, alors pardonnez-moi si le code est un peu moche, merci !
# coding: utf-8-sig
class DBoperator(object):
def input_HA(wbname):
import xlrd
import pymysql
book = xlrd.open_workbook(wbname + '.xls')
sheet = book.sheet_by_name('owssvr(2)')
conn = pymysql.connect(host='localhost', user='root', passwd='init#201605', db='cc', charset='utf8')
cur = conn.cursor()
tbcreate = 'create table ' + wbname + '(id INT(11) NOT NULL AUTO_INCREMENT,\
`Valid_or_not` VARCHAR(50) NULL DEFAULT NULL,\
`DCI_Number` VARCHAR(30) NULL DEFAULT NULL,\
`HA_DM_Number` VARCHAR(30) NULL DEFAULT NULL,\
`Harness_Number` VARCHAR(30) NULL DEFAULT NULL,\
`HA_DM_Name` VARCHAR(30) NULL DEFAULT NULL,\
`Basic_Number` VARCHAR(20) NULL DEFAULT NULL,\
`Configuration_No` VARCHAR(10) NULL DEFAULT NULL,\
`HA_Version` VARCHAR(10) NULL DEFAULT NULL,\
`Effectivity` VARCHAR(50) NULL DEFAULT NULL,\
`GH_compared` VARCHAR(10) NULL DEFAULT NULL,\
`Delivery_Date` VARCHAR(50) NULL DEFAULT NULL,\
`Released_Date` VARCHAR(50) NULL DEFAULT NULL,\
`Rejected_Date` VARCHAR(50) NULL DEFAULT NULL,\
`Comments` VARCHAR(1000) NULL DEFAULT NULL,\
`ECP_Number` VARCHAR(50) NULL DEFAULT NULL,\
`IDEAL_Status` VARCHAR(50) NULL DEFAULT NULL,\
`Item_Type` VARCHAR(50) NULL DEFAULT NULL,\
`Path` VARCHAR(50) NULL DEFAULT NULL,\
PRIMARY KEY (`id`))\
COLLATE="utf8_general_ci"'
cur.execute(tbcreate)
conn.commit()
query = 'insert into ' + wbname + '(Valid_or_not, DCI_Number, HA_DM_Number, Harness_Number, HA_DM_Name, Basic_Number, Configuration_No, HA_Version, Effectivity, GH_compared, Delivery_Date, Released_Date, Rejected_Date, Comments, ECP_Number, IDEAL_Status, Item_Type, Path) values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)'
for r in range(1, sheet.nrows):
Valid_or_not = sheet.cell(r, 0).value
DCI_Number = sheet.cell(r, 1).value
HA_DM_Number = sheet.cell(r, 2).value
Harness_Number = sheet.cell(r, 3).value
HA_DM_Name = sheet.cell(r, 4).value
Basic_Number = sheet.cell(r, 5).value
Configuration_No = sheet.cell(r, 6).value
HA_Version = sheet.cell(r, 7).value
Effectivity = sheet.cell(r, 8).value
GH_compared = sheet.cell(r, 9).value
Delivery_Date = sheet.cell(r, 10).value
Released_Date = sheet.cell(r, 11).value
Rejected_Date = sheet.cell(r, 12).value
Comments = sheet.cell(r, 13).value
ECP_Number = sheet.cell(r, 14).value
IDEAL_Status = sheet.cell(r, 15).value
Item_Type = sheet.cell(r, 16).value
Path = sheet.cell(r, 17).value
values = (Valid_or_not, DCI_Number, HA_DM_Number, Harness_Number, HA_DM_Name, Basic_Number,Configuration_No, HA_Version, Effectivity, GH_compared, Delivery_Date, Released_Date, Rejected_Date, Comments, ECP_Number, IDEAL_Status, Item_Type, Path)
values = ['NULL' if x == '' else x for x in values]
values = ['NULL' if x == 0 else x for x in values]
#values2 = ['NULL' if x == '' else x for x in values]
print(tuple(values))
cur.execute(query , tuple(values))
conn.commit()
cur.close()
conn.close()
pass
def input_ImpactList(wbname):
import xlrd
import pymysql
book = xlrd.open_workbook(wbname+'.xls')
sheet = book.sheet_by_name('Extract')
conn = pymysql.connect(host='localhost', user='root', passwd='init#201605', db='cc', charset='utf8')
cur = conn.cursor()
tbcreate = 'create table ' + wbname + '(id INT(11) NOT NULL AUTO_INCREMENT,\
`Change_Number` VARCHAR(50) NULL DEFAULT NULL,\
`ImpactedItem` VARCHAR(50) NULL DEFAULT NULL,\
`Change_Action` VARCHAR(50) NULL DEFAULT NULL,\
`EDZ` VARCHAR(50) NULL DEFAULT NULL,\
`Type` VARCHAR(50) NULL DEFAULT NULL,\
`Harness` VARCHAR(50) NULL DEFAULT NULL,\
`ECP_Num` VARCHAR(50) NULL DEFAULT NULL,\
PRIMARY KEY (`id`))\
COLLATE="utf8_general_ci"'
cur.execute(tbcreate)
conn.commit()
query = 'insert into' + wbname + '(Change_Number, ImpactedItem, Change_Action, EDZ, Type, Harness, ECP_Num) values (%s, %s, %s, %s, %s, %s, %s)'
for r in range(1, sheet.nrows):
Change_Number = sheet.cell(r, 0).value
ImpactedItem = sheet.cell(r, 1).value
Change_Action = sheet.cell(r, 2).value
EDZ = sheet.cell(r, 3).value
Type = sheet.cell(r, 4).value
Harness = sheet.cell(r, 5).value
ECP_Num = sheet.cell(r, 6).value
values = (Change_Number, ImpactedItem, Change_Action, EDZ, Type, Harness, ECP_Num)
values = ['NULL' if x == '' else x for x in values]
values = ['NULL' if x == 0 else x for x in values]
print(tuple(values))
cur.execute(query, tuple(values))
conn.commit()
cur.close()
conn.close()
pass
Voici le message d'erreur :
phpcn_u15822017-05-18 10:57:11
J'ai trouvé la raison, elle était due au manque d'espaces dans 'insérer dans'
Il suffit de remplacer 'insérer dans' par 'insérer dans'