sql >> データベース >  >> RDS >> Mysql

PythonにDB関数呼び出しを含めるMySQLdbexecutemany()

    以下の方法は理想からはほど遠いですが、残念ながら、それが私が知っている唯一の方法です。

    アイデアは、 connection.literal を使用して、SQLを手動で構築することです。 あなたのために議論を逃れるために:

    cursor=connection.cursor()
    args=[(1,'foo'),(2,'bar')]
    sql=('INSERT INTO `foo` (`fooid`,`data`,`time_added`) VALUES '
         +','.join(
             ['(%s,%s,NOW())'%connection.literal(arg)
              for arg in args]))
    cursor.execute(sql)
    

    これはひどいように見え、肌を這わせる可能性がありますが、内部(/usr/lib/pymodules/python2.6/MySQLdb/cursors.py内)を見ると、MySQLdbがcursors.executemany<で何をしているのかを確認できます。 / code> 、これは、正規表現 cursors.insert_values による混乱を除いて、その関数が実行していることと同じ線に沿っていると思います。 ネストされた括弧を正しく解析していません。 (eek!)

    oursqlをインストールしました 、MySQLdbの代替であり、喜んで報告します

    sql='INSERT INTO `foo` (`fooid`,`data`,`time_added`) VALUES (?,?,NOW())'
    cursor.executemany(sql,args)
    

    oursqlで期待どおりに機能します。




    1. MySQLは一意の制約のnull値を無視しますか?

    2. Backbone.jsモデルをMySQLデータベースに挿入します

    3. Springデータのエンティティにスキーマ名を追加しますか?

    4. MySqlテーブルをJSON形式に