2009-07-29 5 views
4

Я могу успешно использовать Python для создания базы данных и запустить метод execute() для создания 2 новых таблиц и указать имена столбцов. Однако я не могу вставить данные в базу данных. Это код, который я пытаюсь использовать для вставки данных в базу данных:Невозможно вставить данные в базу данных sqlite3 с помощью Python

#! /usr/bin/env python 

import sqlite3 

companies = ('GOOG', 'AAPL', 'MSFT') 

db = sqlite3.connect('data.db') 
c = db.cursor() 

for company in companies: 
    c.execute('INSERT INTO companies VALUES (?)', (company,)) 

Вот код, который я использую, чтобы успешно создать базу данных с помощью:

#! /usr/bin/env python 

import sqlite3 

db = sqlite3.connect('data.db') 

db.execute('CREATE TABLE companies ' \ 
     '('\ 
     'company varchar(255) '\ 
     ')') 

db.execute('CREATE TABLE data ' \ 
     '('\ 
     'timestamp int, '\ 
     'company int, '\ 
     'shares_held_by_all_insider int, '\ 
     'shares_held_by_institutional int, '\ 
     'float_held_by_institutional int, '\ 
     'num_institutions int '\ 
     ')') 
+1

Это сработало для меня. Вы получаете какие-либо ошибки? –

+0

Нет, все, казалось, отлично работало, кроме того, что записи не добавлялись в таблицу. –

ответ

19

Попробуйте добавить

db.commit() 

после вставки.

+0

Работал как шарм! Благодарю. –

3

Чтобы вставить данные вам не нужен курсор

просто использовать дб

db.execute() вместо c.execute() и избавиться от с = db.cursor линии()

Курсоры не используются для вставки данных, но обычно для чтения данных или обновления данных на месте.

+0

Спасибо за предложение, но я уже пробовал это. –