При импорте из excel знак + не вставляется в числовое поле, django

У меня есть один файл excel, в котором есть поля SMS-no и WhatsApp-no. Мы храним номера с кодами стран в нашей базе данных. При импорте файла .xls номер вставляется успешно, но знак '+' не вставляется в базу данных.

Я делюсь скриншотом файла excel и тем, как он хранится в базе данных.

Скриншот файла 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]
Вернуться на верх