質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.40%

  • Python 2.7

    1364questions

    Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

エラー内容を教えてください

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,954

kasaburanka

score 137

お世話になります。
下記のエラー内容を教えてください

 -*- coding: utf-8 -*- 

import sqlite3

connector = sqlite3.connect("sqlite_test.db")

sql = "insert into test_table values('1', 'python')"
connector.execute(sql)
sql = "insert into test_table values('2', 'パイソン')"
connector.execute(sql)
sql = "insert into test_table values('3', 'ぱいそん')"
connector.execute(sql)

connector.commit()
connector.close()
このコードを打ち込めと”connector.execute(sql)”この部分で下記のエラーが出ます。
no such table: test_tableということはtest_tableを作ってあってもなぜだめなのかわかりません。ご指導ください
c:\Python27\python>python test103.py
Traceback (most recent call last):
File "test103.py", line 8, in <module>
connector.execute(sql)
sqlite3.OperationalError: no such table: test_table

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

sqlite3の使いかた、ソースコード解説付き
すみません。まず、下記のURLを参照すると判りやすいかと思います。

http://qiita.com/mas9612/items/a881e9f14d20ee1c0703

データベースに値を設定する前(一番最初に)create文でデータの配置(table:Excelのシートのような物)を定義する必要があります。
色々なデータベースの共通処理です。(sqlite,mysql,Postgersqlなどなど)

# -*- coding: utf-8 -*- 

import sqlite3

connector = sqlite3.connect("sqlite_test.db")
c = connector.cursor()
# executeメソッドでSQL文を実行する
create_table = '''create table test_table (id int, name varchar(64))'''
c.execute(create_table)
sql = "insert into test_table values('1', 'python')" 
connector.execute(sql) 
sql = "insert into test_table values('2', 'パイソン')" 
connector.execute(sql) 
sql = "insert into test_table values('3', 'ぱいそん')" 
connector.execute(sql)

connector.commit() 
connector.close()

内容の確認

# sqlite3 sqlite_test.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
test_table
sqlite> select * from test_table ;
1|python
2|パイソン
3|ぱいそん
sqlite>.quit

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/24 15:11

    お世話になります。
    データベースに値を設定する前(一番最初に)create文でデータの配置(table:Excelのシートのような物)を定義する必要があります。 やり方を忘れてしまいましたのでお教えください

    キャンセル

  • 2016/10/24 15:48

    1年前はできていたけどほとんど忘れてしまっています。コードを打っていなかったため記憶が飛んでいます。やってみます。ありがとうございます

    キャンセル

  • 2016/10/28 16:00

    お世話になります。何かがおかしいです。どうしてエラーが出るのでしょうか?
    >>> import sqlite3
    >>> connector = sqlite3.connect("sqlite_test.db")
    >>> c = connector.cursor()
    >>> create_table = '''create table test_table (code varchar, name varchar(64))'''
    >>> c.execute(create_table)
    <sqlite3.Cursor object at 0x0273CBA0>
    >>> sql = "insert into test_table values('1', 'python')"
    >>> connector.execute(sql)
    <sqlite3.Cursor object at 0x02FDDEA0>
    >>> sql = "insert into test_table values('2', 'パイソン')"
    >>> connector.execute(sql)
    <sqlite3.Cursor object at 0x02FE8220>
    >>> sql = "insert into test_table values('3', 'ぱいそん')"
    >>> connector.execute(sql)
    <sqlite3.Cursor object at 0x02FDDEA0>
    >>> connector.commit()
    >>> connector.close()
    >>>
    >>> import sqlite3
    >>> connector = sqlite3.connect("sqlite_test.db")
    >>> currsor = connector.cursor()
    >>> cursor.execute("select * from test_table order by code")

    Traceback (most recent call last):
    File "<pyshell#17>", line 1, in <module>
    cursor.execute("select * from test_table order by code")
    NameError: name 'cursor' is not defined
    >>>
    ちなみに登録したデータの確認です。そのときにエラーが出ます
    *************************************
    # -*- coding: utf-8 -*-

    import sqlite3

    connector = sqlite3.connect("sqlite_test.db")
    cursor = connector.cursor()
    cursor.execute("select * from test_table order by code")

    result = cursor.fetchall()

    for row in result:
    print "===== Hit! ====="
    print "code -- " + unicode(row[0])
    print "name -- " + unicode(row[1])

    cursor.close()
    connector.close()

    キャンセル

  • 2016/10/28 16:08

    >>> currsor = connector.cursor()
    >>> cursor.execute("select * from test_table order by code") <-- 受け取る変数が間違ってます!

    キャンセル

  • 2016/10/28 16:18

    何にすればよいのですか?code varchar, name varchar(64)にしていますので・・・
    小出にすればよいのかと思いました。お教えください

    キャンセル

  • 2016/10/28 20:21

    下記が正解です。(rが1文字足りなかったのがエラーの原因です)
    currsor = connector.cursor()
    currsor.execute("select * from test_table order by code") 

    キャンセル

  • 2016/10/29 09:54

    お世話になります。IDLE (Python GUI)でコードを打ち込むとエラーが出ます。UTF-8が対応していないなどのエラーです。これらはPythonフォルダーに保存して(保存するときにcoding utf-8の宣言をして)やるとエラーは出ません。エディタで保存するほうがうまく機能すると思われます。私はできるだけIDLE (Python GUI)を使って勉強していましたがその場その場でやれる方法をとることですね。Macでも同じように保存しないでターミナルでコードを打つとエラーになります。使い分けが必要だと思います。ありがとうございました。currsorはわたくしの打ち間違いでした。今回はtest_tableの作り方が大変貴重な勉強になりました。重ねてお礼申し上げます。今後Anaconda(Jupyter Notebook)の使い方も大学習していきたいです。まだまだです

    キャンセル

0

test_table こんなテーブルありません。

と言っています。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/24 12:49

    お世話になります。test_tableを設定するにはどうすればいいのでしょうか?
    sqlite_test.dbはPythonフォルダーの中には存在します。接続をしてもtest_tableがない?事前にどうすればいいのでしょうか?

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.40%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Python 2.7

    1364questions

    Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。