お読みいただきありがとうございます。問題を説明するのは長いポストになるだろう。私はすべての通常の情報源で答えを見つけることができませんでした。MySQLとPython Select文の問題
問題: pythonでselect文を使用してmysqlデータベースのテーブルからデータを呼び出す際に問題が発生します。
システムとバージョン:私は、通常のMySQLのクエリを経由して欲しい
ここmysql> describe hashes;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | varchar(20) | NO | PRI | NULL | |
| hash | varbinary(4) | NO | MUL | NULL | |
+-------+--------------+------+-----+---------+-------+
されている応答:
mysql> SELECT id FROM hashes WHERE hash='f';
+------+
| id |
+------+
| 0x67 |
+------+
mysql> SELECT id FROM hashes WHERE hash='ff';
+--------+
| id |
+--------+
| 0x6700 |
+--------+
を前と同じように、これらはここで
Linux ubuntu 2.6.38-14-generiC#58-Ubuntu SMP Tue Mar 27 20:04:55 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
Python: 2.7.1+
MySql: Server version: 5.1.62-0ubuntu0.11.04.1 (Ubuntu)
は、テーブルの予想される回答とDBの設計方法について説明します。
マイコード:
import mysql.connector
from database import login_info
import sys
db = mysql.connector.Connect(**login_info)
cursor = db.cursor()
data = 'ff'
cursor.execute("""SELECT
* FROM hashes
WHERE hash=%s""",
(data))
rows = cursor.fetchall()
print rows
for row in rows:
print row[0]
これは私が期待する結果を返します:
[(u'0x67', 'f')]
0x67
私がデータを変更した場合:
: データ= 'のF-F' 私は、次のエラーが表示されますTraceback (most recent call last):
File "test.py", line 11, in <module>
(data))
File "/usr/local/lib/python2.7/dist-packages/mysql_connector_python-0.3.2_devel- py2.7.egg/mysql/connector/cursor.py", line 310, in execute
"Wrong number of arguments during string formatting")
mysql.connector.errors.ProgrammingError: Wrong number of arguments during string formatting
OK。だから、私はそうと、私のSQL文に文字を書式文字列を追加します。
cursor.execute("""SELECT
* FROM hashes
WHERE hash=%s%s""",
(data))
そして私は、次の応答を取得:
[(u'0x665aa6', "f'f")]
0x665aa6
をし、それが0x6700によって必要があります。
私は1つの%s文字でデータを渡す必要があることを知っています。これは、変数ごとに1%を使用してデータベーステーブルを作成する方法です。
cursor.execute("""
INSERT INTO hashes (id, hash)
VALUES (%s, %s)""", (k, hash))
これを修正する方法はありますか?
ありがとうございました。
驚くばかりです!これは私の問題を解決しました。ありがとう! – JoshP