2017-10-29 3 views
0

私はまだFlask-mysqlを使用しています(この理由だけdownvoteをしないでください...)。このFlask-mysqlをコミットする方法は?

データベースコンテキスト(mysql変数)が正常に取得されており、データベース/クエリ結果を取得できます。それは動作していない挿入だけです:それは不平を言っていません(例外を投げる)。挿入メソッドからTrueを返します。

それがコミットするときには、レコードを挿入実行する必要がありますが、私はMySQL WorkbenchでMySQLデータベースを見ると、いくつかの理由で、何もテーブルに挿入していない取得され(それはinsertメソッドから例外を投げていない):

私はinsertCmdに、この中で渡している:

"INSERT into user(username, password) VALUES ('test1','somepassword');" 

は、私は、データベース内の列の長さをチェックし、(それが成功し、テーブルに行を挿入)MySQL Workbenchにコマンドをコピーしました。

私は迷っています。私が見たすべての例は、この形式に従っているようですが、私は良いデータベース・コンテキストを持っています。あなたは私がコメントで試したことが他のものを見ることができます。

def insert(mysql, insertCmd): 
    try: 
     #connection = mysql.get_db() 
     cursor = mysql.connect().cursor() 
     cursor.execute(insertCmd) 
     mysql.connect().commit() 
     #mysql.connect().commit 
     #connection.commit() 
     return True 
    except Exception as e: 
     print("Problem inserting into db: " + str(e)) 
     return False 

答えて

3

接続のハンドルを保持する必要があります。あなたはあなたのループでそれをオーバーライドし続けます。ここで

は簡単な例です:

con = mysql.connect() 
cursor = con.cursor() 

def insert(mysql, insertCmd): 
    try: 
     cursor.execute(insertCmd) 
     con.commit() 
     return True 
    except Exception as e: 
     print("Problem inserting into db: " + str(e)) 
     return False 

mysqlがあなたの接続であれば、あなただけに直接、その上でコミットすることができます

def insert(mysql, insertCmd): 
    try: 
    cursor = mysql.cursor() 
    cursor.execute(insertCmd) 
    mysql.commit() 
    return True 
    except Exception as e: 
    print("Problem inserting into db: " + str(e)) 
    return False 
    return False 
+1

をあなたの最後の 'false'をが;-) –

+0

おかげでデッドコードで返します!それを今試みている。また、ローラン、それを指摘してくれてありがとう。最後のリターンを削除します。 – JakeJ

+0

作品!どうもありがとう!コメントの中の私の試みがそれに絡み合っていない理由は考えられませんでした。私がコネクションにコミットしていると断言できましたか?私は今それを慎重に調べなければならないでしょう。 – JakeJ

0

どうやら、あなたは、接続してカーソルを分離しなければなりませんそれは動作しません。

カーソルを取得するには、これは動作します:カーソル= mysql.connect()カーソル()

しかし、Burchanハリドはとても巧みに順に接続オブジェクトを作成することの後に任意の試みを指摘したようにコミットすると、カーソルを使って行った作業が消去されます。

だから、あなたは以下の(近道)行いませんする必要があります。

connection = mysql.connect() 
cursor = connection.cursor() 
cursor.execute(insertCmd) 
connection.commit() 
+0

私はKhalidを答えとして残し、これを固めさせるためにこれを置いています。 – JakeJ

+0

ここにはすべてのフラスココードが含まれた完全なレポがあります: https://github.com/DiginessForever/flicklistBlog.git 私はすべての種類の正規表現マッチなどを行っています。これらの最新の変更はすぐにコミットされます過去数時間からの他の小さな修正の束)。 – JakeJ

関連する問題