kullanılarak saklı yordamdan sonuç döndürülemiyor Bazı garip nedenlerden dolayı, bir Python test uygulamasında bir callproc çağrısından sonuç alamıyorum. MqSQL 5.2.47 saklanan yordam şuna benzer:Python imleci
Şimdi, Python 3.3 ile pycharm kullanarak, bu saklı yordam çağrılırken şey almak için görünmüyor olabilir.
import mysql.connector
cnx = mysql.connector.connect(user='root', host='127.0.0.1', database='mytestdb')
cnx._open_connection()
cursor = cnx.cursor()
cursor.execute("select * from person where person.person_id = 1")
people = cursor.fetchall()
for person in people:
print(person)
cnx.close()
Ama her iki cursor.fetchall() veya cursor.execute() ile bu kod ...
import mysql.connector
cnx = mysql.connector.connect(user='root', host='127.0.0.1', database='mytestdb')
cnx._open_connection()
cursor = cnx.cursor()
cursor.callproc("getperson", [1])
people = cursor.fetchall()
for person in people:
print(person)
cnx.close()
... döner "mysql.connector: Bu kod bana istenen sonuçları alır. errors.InterfaceError: Hiçbir sonuç alınamadı. " o verir çünkü şöyle cursor.execute() yöntemini kullanarak ek bir garip davranışları ...
import mysql.connector
cnx = mysql.connector.connect(user='root', host='127.0.0.1', database='mytestdb')
cnx._open_connection()
cursor = cnx.cursor()
cursor.execute("call getperson(1)")
people = cursor.fetchall()
for person in people:
print(person)
cnx.close()
... var: takip "mysql.connector.errors.InterfaceError birden sorgu ile tablolar için kullanın cmd_query_iter" "mysql.connector.errors.InterfaceError: Birden çok deyimi çalıştırırken multi = True kullan", birden çok sonuç kümesi yerine yalnızca bir sorgu sonucu döndürdüğüm gerçeğine rağmen. MySQL Python bağlayıcısı saklı yordamdaki yürütme çağrısını çift sorgu olarak mı ele alıyor? Depolanmış prosedürü nasıl çağırıp sonuçlarımı geri alabilirim? Kodumda gerçekten dinamik SQL istemiyorum. Herhangi bir tavsiye için şimdiden teşekkür ederiz!
o MySQL daha SQL server sözdizimi daha olmaz mı? –
Bu, MySQL'in PL/SQL dosyasında geçerli bir komut olmadığı için. SQL Server'ın T-SQL'i için geçerli bir komuttur, ancak bu proje için kullandığım şey bu değil. MySQL'in saklı yordamları çağırmak için sözdizimi 'proc_name ([argümanlar])' dır. – gfish3000