Mysql
 sql >> Baza danych >  >> RDS >> Mysql

pymysql callproc() wydaje się wpływać na kolejne wybory

Mam podobny problem z (zatwierdzonymi) instrukcjami INSERT, które nie pojawiają się w bazie danych. PyMySQL 0.5 do Pythona 3.2 i MySQL Community Server 5.5.19.

Znalazłem rozwiązanie dla mnie:zamiast metody execute() użyłem metody executemany, wyjaśnionej w odnośniku do modułu na http://code.google.com/p/pymssql/wiki/PymssqlModuleReference Jest też link do przykładów.

Aktualizacja Nieco później, dzisiaj dowiedziałem się, że to nie jest jeszcze pełne rozwiązanie. Zbyt szybkie exit() na końcu skryptu Pythona powoduje utratę danych w bazie danych. Dodałem więc time.sleep() przed zamknięciem połączenia i przed wyjściem () ze skryptu, aż w końcu pojawiły się wszystkie dane! (przełączyłem się również na użycie tabeli 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()

Proponuję forum/grupę https://groups.google.com/forum /#!forum/pymysql-users do dalszej dyskusji z deweloperem.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przewodnik po projektowaniu bazy danych dla biuletynu w MySQL

  2. zaktualizuj kolumnę tabeli po wstawieniu nowego rekordu za pomocą wyzwalaczy MySQL

  3. Problem z lokalnym hostem MySQL / 127.0.0.1

  4. Mysql niemieckie akcenty niewrażliwe wyszukiwanie w wyszukiwaniach pełnotekstowych

  5. Sformatuj kod MySQL w ciągu PHP