При импорте из excel знак + не вставляется в числовое поле, django
У меня есть один файл excel, в котором есть поля SMS-no и WhatsApp-no. Мы храним номера с кодами стран в нашей базе данных. При импорте файла .xls номер вставляется успешно, но знак '+' не вставляется в базу данных.
Я делюсь скриншотом файла excel и тем, как он хранится в базе данных.
Скриншот данных, вставленных в базу данных
Вот мой код views.py
fs = FileSystemStorage()
filedata = fs.save("ImportDB.xls", myfile)
BASE_DIR = os.path.dirname(
os.path.dirname(os.path.abspath(__file__)))
filepath = BASE_DIR + "\media\ImportDB.xls"
book = xlrd.open_workbook(filepath)
sheet = book.sheet_by_name("Sheet1")
database = MySQLdb.connect(
host="localhost", user="root", passwd="", db="mbs")
cursor = database.cursor()
query = """INSERT INTO addcontact (f_name, l_name, add_ln1, add_ln2, country, city, zip, sms_no, whtsp_no) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)"""
for r in range(1, sheet.nrows):
f_name = sheet.cell(r, 0).value
l_name = sheet.cell(r, 1).value
add_ln1 = sheet.cell(r, 2).value
add_ln2 = sheet.cell(r, 3).value
country = sheet.cell(r, 4).value
city = sheet.cell(r, 5).value
zip = sheet.cell(r, 6).value
sms_no = sheet.cell(r, 7).value
whtsp_no = sheet.cell(r, 8).value
values = (f_name, l_name, add_ln1, add_ln2, country, city, zip, sms_no, whtsp_no)
cursor.execute(query, values)
cursor.close()
database.commit()
database.close()
fs.delete(filedata)
Все данные вставляются успешно. Но в базу данных число добавляется без знака +.
Вам нужно изменить поле с некоторого IntegerField
на ChardField
. База данных рассматривает целое число +123
как просто положительное число 123
.
Я преобразовал данные в строку и объединил + знак, но после объединения он добавляет .0 в каждом числе, поэтому я использовал функцию split и получил только значение до. (точка).
вот мой код
sms_no = sheet.cell(r, 8).value
whtsp_no = sheet.cell(r, 9).value
sms1 = "+"+str(sms_no)
smsno = sms1.split(".")
finalsms = smsno[0]
whtsapp1 = "+"+str(whtsp_no)
whtsapno = whtsapp1.split(".")
finalwhtsap = whtsapno[0]