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

pymysql callproc()は、後続の選択に影響を与えるようです

    (コミットされた)INSERTステートメントがデータベースに表示されないという同様の問題があります。 PyMySQL0.5fürPython3.2およびMySQLCommunityServer5.5.19。

    解決策を見つけました。execute()メソッドを使用する代わりに、executemanyメソッドを使用しました。これは、 http://code.google.com/p/pymssql/wiki/PymssqlModuleReference 例へのリンクもあります。

    更新 少し後、今日、これはまだ完全な解決策ではないことがわかりました。Pythonスクリプトの最後のexit()が速すぎると、データベースでデータが失われるため、time.sleep()を追加しました。接続を閉じる前、およびスクリプトを終了する前に、最終的にすべてのデータが表示されました!(myisamテーブルの使用にも切り替えました)

    import pymysql
    conn = pymysql.connect(host='localhost', user='root', passwd='', db='mydb', charset='utf8')
    conn.autocommit(True)
    cur = conn.cursor()
    
    # CREATE tables (SQL statements generated by MySQL workbench, and exported with Menu -> Database -> Forward Engineer)
    cur.execute("""
    SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
    SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
    SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL';
    
    DROP SCHEMA IF EXISTS `mydb` ;
    CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
    USE `mydb` ;
    # […]
    
    SET [email protected]_SQL_MODE;
    SET [email protected]_FOREIGN_KEY_CHECKS;
    SET [email protected]_UNIQUE_CHECKS;
    
    """)
    
    # Fill lookup tables:
    
    cur.executemany("insert into mydb.number(tagname,name,shortform) values (%s, %s, %s)", [('ЕД','singular','sg'), ('МН','plural','p')] )
    cur.executemany("insert into mydb.person(tagname,name,shortform) values (%s, %s, %s)", [('1-Л','first','1st'), ('2-Л','second','2nd'), ('3-Л','third','3rd')] )
    cur.executemany("insert into mydb.pos(tagname,name,shortform) values (%s, %s, %s)", [('S','noun','s'), ('A','adjective','a'), ('ADV','adverb','adv'), ('NUM','numeral','num'), ('PR','preposition','pr'), ('COM','composite','com'), ('CONJ','conjunction','conj'), ('PART','particle','part'), ('P','word-clause','p'), ('INTJ','interjection','intj'), ('NID','foreign-named-entity','nid'), ('V','verb','v')] )
    #[…]
    
    import time
    time.sleep(3)
    cur.close()
    conn.close()
    time.sleep(3)
    exit()
    

    フォーラム/グループ https://groups.google.com/forum /#!forum / pymysql-users 開発者とのさらなる議論のために。




    1. マージステートメントはMySQLで利用できますか

    2. SQL Serverのすべてのデータベースのすべてのテーブルを単一の結果セットに一覧表示するにはどうすればよいですか?

    3. コース完了時に外部データベースを更新します

    4. OracleCloudのMAAドキュメント