sql >> Database >  >> RDS >> Mysql

pymysql callproc() lijkt volgende selecties te beïnvloeden

Ik heb een soortgelijk probleem met (toegewijde) INSERT-statements die niet in de database verschijnen. PyMySQL 0.5 voor Python 3.2 en MySQL Community Server 5.5.19.

Ik vond de oplossing voor mij:in plaats van de methode execute() te gebruiken, gebruikte ik de methode executemany, uitgelegd in de modulereferentie ophttp://code.google.com/p/pymssql/wiki/PymssqlModuleReference Er is ook een link naar voorbeelden.

Bijwerken Iets later, vandaag, kwam ik erachter dat dit nog niet de volledige oplossing is. Een te snelle exit() aan het einde van het python-script zorgt ervoor dat de gegevens verloren gaan in de database. Dus heb ik een time.sleep() toegevoegd voordat de verbinding werd gesloten en voordat het script werd afgesloten () en uiteindelijk verschenen alle gegevens! (Ik schakelde ook over op het gebruik van een myisam-tabel)

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()

Ik raad het forum/groep https://groups.google.com/forum aan /#!forum/pymysql-users voor verdere discussie met de ontwikkelaar.




  1. Wat is reeks in orakel

  2. PHP MySQL-query waarbij x =$variabele

  3. Beoordelingssysteem in PHP en MySQL

  4. Limieten voor Salesforce API Query-cursor