2012-05-06 7 views
0

'OperationalError:near "VARCHAR":構文エラー'この関数を呼び出すと、何が間違っていますか?なぜPythonでSQL呼び出し中に 'VARCHAR'の近くでoperationalerrorが発生しますか?

def database_create_user(table_name, user_ID, username, password, creator_exp): 
    users_db_curs.execute("INSERT INTO `" + table_name + "` (uID VARCHAR(20), username VARCHAR(20), password VARCHAR(30), creator_exp VARCHAR(20)) VALUES ('" + user_ID + "', '" + username + "', '" + password + "', '" + creator_exp + "')") 
    users_db_connection.commit() 

答えて

2

テーブルがすでに作成されたら、各INSERTクエリで列タイプを再指定する必要はありません。

users_db_curs.execute("INSERT INTO `" + table_name + "` (user_ID, username , password , creator_exp) VALUES ('" + user_ID + "', '" + username + "', '" + password + "', '" + creator_exp + "')") 
2

データ型をINSERT文で指定しないでください。私は、INSERT文に現れたデータ型を削除しました。ここに修正版があります。

コードは、分かりやすく読みやすいように、複数の行にまとめられています。

def database_create_user(table_name, user_ID, username, password, creator_exp): 
users_db_curs.execute("INSERT INTO `" + table_name + "` (uID, username, 
password, creator_exp) VALUES ('" + user_ID + "', '" + username + "', 
'" + password + "', '" + creator_exp + "')") 
users_db_connection.commit() 
関連する問題