Mysql
 sql >> база данни >  >> RDS >> Mysql

Изглежда, че pymysql callproc() засяга последващи селекции

Имам подобен проблем с (ангажирани) оператори INSERT, които не се появяват в базата данни. PyMySQL 0.5 за Python 3.2 и MySQL Community Server 5.5.19.

Намерих решението за мен:вместо да използвам метода execute(), използвах метода executemany, обяснен в препратката към модула наhttp://code.google.com/p/pymssql/wiki/PymssqlModuleReference Има и връзка към примери.

Актуализиране Малко по-късно, днес, разбрах, че това все още не е пълното решение. Твърде бързият exit() в края на скрипта на python кара данните да се губят в базата данни. И така, добавих 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Отношения на таблицата на MyISAM Engine (MySQL)

  2. Търсене по ключови думи с PHP MySql?

  3. Използваният тип таблица не поддържа SPATIAL индекси

  4. Spring Boot + Spring Data JPA заявка от типа java.util.Date, използвайки само месеца

  5. Защо моята съхранена процедура хвърля грешка „Няма данни – нула реда извлечени, избрани или обработени“, когато имам WHERE в израза?