sql >> Databasteknik >  >> RDS >> Mysql

pymysql callproc() verkar påverka efterföljande val

Jag har ett liknande problem med (committed) INSERT-satser som inte visas i databasen. PyMySQL 0.5 för Python 3.2 och MySQL Community Server 5.5.19.

Jag hittade lösningen för mig:istället för att använda metoden execute() använde jag metoden executemany, som förklaras i modulreferensen påhttp://code.google.com/p/pymssql/wiki/PymssqlModuleReference Det finns också en länk till exempel.

Uppdatera Lite senare, idag, fick jag reda på att detta ännu inte är den fullständiga lösningen. En för snabb exit() i slutet av python-skriptet gör att data går vilse i databasen. Så jag lade till en time.sleep() innan du stängde anslutningen och innan du avslutade() skriptet, och till sist dök all data upp!(Jag bytte också till att använda en myisam-tabell)

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

Jag föreslår forumet/gruppen https://groups.google.com/forum /#!forum/pymysql-users för vidare diskussion med utvecklaren.




  1. Finns det någon skillnad mellan SQL Server Express (2012) och LocalDB?

  2. mysql efter insert trigger som uppdaterar en annan tabells kolumn

  3. Slingresultat PDO PHP

  4. Hur räknar man alla rader när man använder SELECT med LIMIT i MySQL-frågan?