Я читаю цифры из разделенных запятыми текстовых файлов, где некоторые цифры находятся в форме 000000084. Эти файлы добавляются в messageclass, а затем помещаются в базу данных SQLite. Проблема в том, что SQLite сохраняет эти 000000084 как 84, хотя я создаю столбец таблицы как строку.Где мои ведущие нули?
файл_ввода
something,000000018,213123
somethingelse,000000025,213123
Создание базы данных: класс
def createDatabase(databasepath):
con = lite.connect(databasepath)
with con:
cur = con.cursor()
cur.execute("CREATE TABLE staticMessage(userid string)")
Сообщение:
class StaticMessage:
def __init__ (self, userid):
self.userid = userid
Распаковка сообщение из файла:
def extractStaticMessages(filepath):
global staticMessage
staticMessage = []
lengths = []
f = open(filepath, 'r')
for line in f:
newline = line.split(",")
message = StaticMessage(newline[1])
staticMessage.append(message)
Запись сообщения в базу данных:
def writeStaticToDatabase(databasepath):
con = lite.connect(databasepath)
con.isolation_level = None
with con:
cur = con.cursor()
cur.execute('BEGIN TRANSACTION')
for i in range(0, len(staticMessage)):
cur.execute("INSERT INTO staticMessage(userid) VALUES(?)",
(staticMessage[i].userid)
cur.execute('COMMIT')
Когда я затем запросить мою базу данных с f.ex:
select userid from staticMessage where userid='000000084'
я 84
Это основная неприятность для меня, потому что я хочу запросить мою базу данных, чтобы получить количество идентификаторов пользователя менее девяти цифр.
TL/DR: где мои ведущие нули идут при вставке в SQLite?
Просто небольшое примечание, вы должны обязательно использовать ['csv'] (https://docs.python.org/2/library/csv.html), чтобы читать значения из файла, а не сворачивать свои собственные. И вы можете просто выполнить 'для сообщения в staticMessage:', не нужно индексировать 'range' и array. Можете ли вы показать, как вы показываете '84', когда говорите« Я получаю 84 »? Возможно, это может быть проблемой, а не тем, что данные хранятся в самой базе данных неправильно. Вы проверили в необработанных таблицах базы данных, чтобы убедиться, что он вставлен как «000000084»? – aruisdante
Показать схему таблицы. –
@aruisdante Спасибо за ваш ответ. Я получаю 84, выполнив запрос, показанный прямо над этим. Терминал ubuntu выводит 84. Но вы правы, возможно, что он действительно сохранен как следует, но он отключен в выходе. – bjornasm