2017-12-24 3 views
1

このコードを実行すると、 'タプルをバイトに連結できません'という型エラーが返されますが、コードではバイトがどこから来ているのかわかりません私のコードを修正する方法が不明です。コード行がバイトの形をしているポインタ?SQL TypeError:タプルをバイトに連結できません

def array2python(): 

    mfcc = "US" 
    number = 8 #could be any number from 0 to 9 
    t = (number, mfcc) 
    conn = pymysql.connect(host=hostname, port = port, user=username, passwd=password, db=database, charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) 
    cur = conn.cursor() 
    query = ('INSERT INTO audioFiles VALUES (?,?)', t) 
    cur.execute(query) 
    conn.close() 

答えて

3

問題は、この行にある:

query = ('INSERT INTO audioFiles VALUES (?,?)', t) 

あなたはその後、​​を理解するために失敗したタプルとしてqueryを定義しています。

あなたが何を意味:

query = 'INSERT INTO audioFiles VALUES (?,?)' 
cur.execute(query, t) 

をそして、私はあなたが%s as a placeholderを使用する必要があると思う:

query = 'INSERT INTO audioFiles VALUES (%s,%s)' 
cur.execute(query, t) 
+0

私は%sに行う必要がありますが、これはSQLインジェクションを招待することを疑わ? – jc76

+0

@ jc76これらの '%s'プレースホルダを使用して文字列の書式設定を行う場合は、-ycを指定します。しかし、我々のケースでは、それらをクエリプレースホルダとして使用し、第2引数のパラメータを 'execute()'に渡しています。ありがとう。 – alecxe

関連する問題