시간을내어 읽어 주셔서 감사합니다. 문제를 설명하기 위해 긴 게시물이 될 것입니다. 나는 모든 일반적인 출처에서 대답을 찾을 수 없었습니다.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
내가 데이터 변경하는 경우 : 데이터를 = 'FF로'나는 다음과 같은 오류가 나타납니다 :
을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
확인. 그래서, 나는 그렇게 나의 SQL 문에 문자를 포맷 문자열을 추가
cursor.execute("""SELECT
* FROM hashes
WHERE hash=%s%s""",
(data))
그리고 나는 다음과 같은 응답을 얻을 :
[(u'0x665aa6', "f'f")]
0x665aa6
을 그리고 0x6700으로해야한다.
% s 문자가있는 데이터를 전달해야한다는 것을 알고 있습니다. 이것이 변수 당 하나의 % s를 사용하여 데이터베이스 테이블을 작성한 방법입니다.
cursor.execute("""
INSERT INTO hashes (id, hash)
VALUES (%s, %s)""", (k, hash))
모든 문제를 해결하는 방법은 무엇입니까?
감사합니다.
굉장! 이것은 내 문제를 해결했다. 감사! – JoshP