Próbuję zapisać listę wartości łańcuchowych w bazie danych SQL.

list = ['please','help','me']

Próbowałem konwertować do Unicode i za pomocą tablicy.ARray ('U', List)

unicode_list = unicode(list)
array.array('u', list)

Nie powoduje to wyników, które chcę. Nie jestem zbyt zainteresowany, aby przeszukać wartość po włożeniu do bazy danych. Wreszcie nie chcę używać alternatywy Nosql w tym czasie. Każda pomoc byłaby bardzo doceniana. Z góry dziękuję.

3
django-d 7 grudzień 2013, 21:15

2 odpowiedzi

Najlepsza odpowiedź

Użyj odpowiedniego mechanizmu serializacji, takich jak JSON, i przechowuj go w polu tekstowym.

>>> json.dumps(['please','help','me'])
'["please", "help", "me"]'
>>> json.loads('["please", "help", "me"]')
[u'please', u'help', u'me']
4
Ignacio Vazquez-Abrams 7 grudzień 2013, 17:18

Aby dodać do odpowiedzi Ignacio Vazquez-Abrams, oto pełny salontktor do przechowywania listy lub listy listy w SQLite DB.

>>> # Create dataframe
>>> df = pd.DataFrame({'Doc:': ["A", "B", "C"],
>>>                   'Doc_Pages': [31, 20, 45],
>>>                   'Data': [["A B C", "D E F"], ["G H I", "J K L"], ["M N O", "P Q R"]]
>>>                   })

>>> print(df)
Doc   Doc_Pages      Data
A       31       ["A B C", "D E F"]
B       20       ["G H I", "J K L"]
C       45       ["M N O", "P Q R"]

>>> # Create DB
>>> import sqlite3
>>> conn = sqlite3.connect('db.sqlite')
>>> cur = conn.cursor()
>>> cur.execute('CREATE TABLE IF NOT EXISTS TableName(ID INTEGER PRIMARY KEY AUTOINCREMENT)')

>>> # Store df into DB
>>> df.Data = df.Data.apply(lambda x: json.dumps(x))
>>> df.to_sql(name='Extracted_Data', con=conn, if_exists='replace')

>>> # Load df from DB
>>> df_new = pd.read_sql('SELECT * FROM TableName', con=conn)
>>> df_new.Data = df_new.Data.apply(lambda x: json.loads(x))

>>> print(df_new)
Doc   Doc_Pages      Data
A       31       ["A B C", "D E F"]
B       20       ["G H I", "J K L"]
C       45       ["M N O", "P Q R"]
0
Pranzell 12 marzec 2019, 15:51