10

python 2.7 64bit、MySQL-python-1.2.3.win-amd64-py2.7.exeをインストールしました。

次のコードを使用してデータを挿入します。

class postcon:
    def POST(self):
        conn=MySQLdb.connect(host="localhost",user="root",passwd="mysql",db="dang",charset="utf8")  
        cursor = conn.cursor()
        n = cursor.execute("insert into d_message (mid,title,content,image) values(2,'xx','ccc','fff')")
        cursor.close()
        conn.close()
        if n:
            raise web.seeother('/')

これにより、nは1として出力されますが、mysqlクライアントのデータは表示されません。

グーグルは私が追加しなければならないと言いconn.autocommit(True)ます。

しかし、MySQLdbがそれをオフにする理由はわかりません。

4

3 に答える 3

13

デフォルトでは、MySQLdbの自動コミットはfalseです。

次のように、MySQLdb接続でautocommitをTrueに設定できます。

conn=MySQLdb.connect(host="localhost",user="root",passwd="mysql",db="dang",charset="utf8")
conn.get_autocommit()        #will return **False**
conn.autocommit(True)
conn.get_autocommit()        #Should return **True** now
cursor = conn.cursor()
于 2017-07-10T09:41:00.773 に答える
6

GAEで自動コミットを使用する特定の理由があるかどうかはわかりません(使用していると仮定します)。それ以外の場合は、手動でコミットできます。

class postcon:
    def POST(self):
        conn=MySQLdb.connect(host="localhost",user="root",passwd="mysql",db="dang",charset="utf8")  
        cursor = conn.cursor()
        n = cursor.execute("insert into d_message (mid,title,content,image) values(2,'xx','ccc','fff')")
        conn.commit() # This right here
        cursor.close()
        conn.close()
        if n:
            raise web.seeother('/')

挿入が正常に行われたかどうかを確認する必要があり、そうでない場合はコミットをロールバックする必要があることに注意してください。

于 2012-08-21T16:45:57.297 に答える
0

コネクタ/Python接続引数

自動コミットをオンにするには、データベースに接続するときに直接実行できます。

import mysql.connector as db
conn = db.connect(host="localhost", user="root", passwd="pass", db="dbname", autocommit=True)

また

import mysql.connector
db = mysql.connector.connect(option_files='my.conf', autocommit=True)

または、呼び出すconn.commit()前に呼び出しcloseます。

于 2021-01-21T19:19:39.350 に答える