一回も披露したことのない豆知識

いま、python2.5を使用してSQLite3のデータベースを読み込みたいのですが、うまく接続できません。pythonとSQLiteは単体ではうまく起動しているので、問い合わせ方に問題があるようなのですが、参考書のとおりに実行してもエラーが出てしまします。接続の書き方を教えていただければ幸いです。以下には、エラーが出た問い合わせを書きました。違うところがあれば指摘してください。
import sqlite3
con = sqlite3.connect("データベース名")
cur = con.cursor() //ここまではうまくいきました。
cur.execute("""create table テーブル名(name text,age text)""")
cur.execute("select * from テーブル名")
print cur.fetchall()

A 回答 (3件)

さっきのコードの訂正です。

インデントする箇所が一箇所抜けておりました。

import sqlite3
con = sqlite3.connect("hogedb")
cur = con.cursor()
try:
____cur.execute("""create table hoge (name text, age text)""")
____cur.execute("""insert into hoge(name,age) values ('YAMADA', '18')""")
____cur.execute("""insert into hoge(name,age) values ('NAKAMURA', '17')""")
except:
____pass
con.commit()
cur.execute("""select * from hoge""")
print cur.fetchall()
raw_input()
    • good
    • 0

CREATEしただけで、何もINSERTしていないのですから、


中身は空っぽの状態なので、print cur.fetchall()で
空のリストが返されるのは当然です。

cur.execute("""create table hoge (name text, age text)""")
でエラーがでるのは、2回目に実行した場合だと思います。
(すでにテーブルが存在するのでエラーになる)
これは、if文で確認して処理を分けるなどの対応が必要です。
以下は、それを踏まえたコードです。
____ の部分は、半角スペース4つに読み替えてください。

import sqlite3
con = sqlite3.connect("hogedb")
cur = con.cursor()
try:
____cur.execute("""create table hoge (name text, age text)""")
____cur.execute("""insert into hoge(name,age) values ('YAMADA', '18')""")
cur.execute("""insert into hoge(name,age) values ('NAKAMURA', '17')""")
except:
____pass
con.commit()
cur.execute("""select * from hoge""")
print cur.fetchall()
raw_input()
    • good
    • 0
この回答へのお礼

有難うございました。とても参考になりました

お礼日時:2008/02/29 14:28

>cur.execute("""create table テーブル名(name text,age text)""")



cur.executescript("""create table テーブル名(name text,age text)""")
じゃないでしょうか?

参考URL:http://d.hatena.ne.jp/seraphy/20060927

この回答への補足

有難うございます。エラーがなくなりました。しかし、print cur.fetchall()をすると[ ]と表示され、中身が表示されないのですが、原因が分かりますでしょうか?何度もすいませんが宜しくお願いします。

補足日時:2007/12/20 13:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報