私はPythonプロジェクトを利用しています.Sqlite3を使用してユーザーのデータを保存しています。Sqlite3に関する質問:タプルを保存してデータを取得する
私は2つの問題を持っているが:私は
がここにあります私のSqliteをテーブルに(「RSA」、6584,786)のようなものを保存する必要があります: まず、私はタプルを保存する方法がわかりませんコード:
def ajouter_utilisateur(identifiant, prenom, adresse_mail, mdp, cle_privee, cle_publique):
commande = sqlite3.connect ('Base_de_donnees.db')
curseur = commande.cursor()
curseur.execute ('''SELECT id FROM utilisateurs''')
id_utilises = curseur.fetchall() # crée une liste [(0,),(1,)...]
nouvel_id = 0
for id_utilise in id_utilises:
if nouvel_id <= id_utilise [0]:
nouvel_id = id_utilise [0] + 1 # le nouvel id est supérieur au plus grand id déja présent
curseur.execute ('''INSERT INTO utilisateurs VALUES (?,?,?,?,?,?,?)''', (nouvel_id, identifiant, prenom, adresse_mail, mdp, cle_privee, cle_publique))
commande.commit()
commande.close()
>>> ajouter_utilisateur ('guil','guil','mail','password',('RSA',587,78), (577,789))
File xx, line 40, in ajouter_utilisateur
curseur.execute ('''INSERT INTO utilisateurs VALUES (?,?,?,?,?,?,?)''',
(nouvel_id, identifiant, prenom, adresse_mail, mdp, cle_privee, cle_publique))
sqlite3.InterfaceError: Error binding parameter 5 - probably unsupported type.
変数がフランス語で、私はとても残念^^ よ、私が欲しいのは、データベース内のこのRSA公開鍵を保存しています。しかし、Sqlite3ではサポートされていないようです。私はこのPython docを見つけましたが、自分で作成したクラス(またはそれは私が理解したもの)からオブジェクトを適合させる方法について説明します タプルをテーブルに保存するにはどうすればできますか?そして、それを回復するにはどうすればいいですか?
(データが格納されていると仮定すると、もはや本当にタプルではありません)そして、私の2番目の質問は、私はいくつかのデータを取り戻すための関数を作成し、ですが、小さな問題:)
def recuperer_donnee_utilisateur (identifiant, donnee):
commande = sqlite3.connect ("Base_de_donnees.db")
curseur = commande.cursor()
curseur.execute ('''SELECT ? FROM utilisateurs WHERE identifiant = ?''', (donnee, identifiant))
donnee_demandee = curseur.fetchone()
commande.close()
return donnee_demandee
>>> ajouter_utilisateur ('guil23', 'guil', 'email_adress', 'password', 687,786)
>>> recuperer_donnee_utilisateur ('guil23', 'adresse_mail')
('adresse_mail',)
がここであり、それは私が関数に与えたパラメータではなく、 'email_adress'を返すことになっていた...なぜそれが 'adresse_mail'を返すのだろうか?任意のヘルプ
EDITため
ありがとう:あなたは何が起こるかを見ることができるようにここで
私は、データベースを削除しました。関数 "affichage_utilisateur()"は、データベースにすでに保存されているユーザーを表示するだけです。
>>> affichage_utilisateurs()
>>> ajouter_utilisateur ('guil23', 'guil', 'my_email_adress', 'my_password', 687,787)
>>> affichage_utilisateurs()
(0, 'guil23', 'guil', 'my_email_adress', 'my_password', '687', '787')
>>> recuperer_donnee_utilisateur ('guil23', 'mot_de_passe') # I want my password
('mot_de_passe',)
一つだけのユーザーがあるが、自分のパスワードはので、私は「my_passwordという」の代わりの「mot_de_passe」とのタプルを取得する必要があります「my_passwordという」です。 'mot_de_passe'は、ユーザーのパスワードが保存される列の名前です。テーブルは次のように定義されます。
curseur.execute ('''CREATE TABLE IF NOT EXISTS utilisateurs (id INTEGER PRIMARY KEY, identifiant TEXT, prenom TEXT, adresse_mail TEXT, mot_de_passe TEXT, cle_privee TEXT, cle_publique TEXT)''')
ファイン、私はタプルを分割するthouhtがあったが、それは後で、コードが複雑になりますように私が第二のものについては、別の解決策 – Guil23
があったかどうかを確認したかった、I質問を編集しました – Guil23
なぜそれが機能していないのでしょうか? : – Guil23