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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

12067閲覧

SQlite3に特定の文字列が記録できない

starrow1103

総合スコア137

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/03/06 13:12

編集2017/03/06 13:54

環境

Python3.6.0
Flask
macOS Sierra

##やりたいこと
作成したテーブルに「http://hogehoge.com」等のURLをINSERTしたい

##エラー内容

python

1<略> 2class Database(): 3 def __init__(self): 4 self.dbpath = os.path.join(app.root_path, 'database.db') 5 self.connection = sqlite3.connect(self.dbpath) 6 self.connection.isolation_level = None 7 self.cursor = self.connection.cursor() 8 def insert(self,url,img_src,title,description,count): 9 connection=self.connection 10 cursor=self.cursor 11 cursor.execute("INSERT INTO url_list VALUES (%s,%s,%s,%s,%s)" % (url,img_src,title,description,count)) 12 connection.commit() 13 connection.close() 14 15Data=Database() 16Data.insert('http://hoge.com',"img.jpg","タイトル","ディスクリプション",1)

実行すると、以下のエラーが発生します。

sqlite3.OperationalError: unrecognized token: ":"

そして、「:」を消すと次は

sqlite3.OperationalError: near "/": syntax error

さらに、「/」を決してみると次は

sqlite3.OperationalError: no such column: httphoge.com ←:も/も消したやつ

となってしまいます。

どん詰まりです。

どなたか、ご教授くださいませ・・・・・・。

追記:

ちなみに、

cursor.execute("INSERT INTO url_list VALUES (%s,%s,%s,%s,%s)" % (url,img_src,title,description,count))

の部分を

cursor.execute("INSERT INTO url_list VALUES (url,img_src,title,description,count)")

に直してみたところ、以下のエラーになりました。

sqlite3.OperationalError: no such column: url

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

略されたところにシングルクォーテーションがあるんじゃないですか?

投稿2017/03/06 13:17

Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

starrow1103

2017/03/06 13:35

略の部分はデータベースとテーブル作成で、 一応確認してはみたのですが、略の部分までで実行するとちゃんと作成されるようです。
Zuishin

2017/03/06 13:39

これはソースをそのままコピペしたものですか? 文字列からはみ出しているように見えます。クォーテーションが全角とかもないですよね?
starrow1103

2017/03/06 13:45

原文そのままですね >文字列からはみ出しているよう 具体的にどのあたりでしょうか@@;
Zuishin

2017/03/06 13:52

これでどうですか? cursor.execute("INSERT INTO url_list VALUES ('%s','%s','%s','%s','%s')" % (url,img_src,title,description,count)) あと、書式化するより SQL のパラメータを使った方がいいと思います。
Zuishin

2017/03/06 13:54

パラメータ使用の実例 http://qiita.com/mas9612/items/a881e9f14d20ee1c0703 > # SQL文に値をセットする場合は,Pythonのformatメソッドなどは使わずに, > # セットしたい場所に?を記述し,executeメソッドの第2引数に?に当てはめる値を > # タプルで渡す.
starrow1103

2017/03/06 13:57

おおおお!無事実行されました!!! '%s'でしたね。 ありがとうございます! やはりSQL特有のメソッドをちゃんと勉強した方が良さそうですね。 とりあえず解決しましたのでベストアンサーです。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問