2016-08-06 17 views
0

Ich baue eine App für Android und ich muss mit Mysql-Datenbank interagieren. Ich habe ein Problem bei der Konfiguration von Zugriff von Android, aber nicht mit meiner Linux-Installation.Kivy SQLalchemy und Android, Kein Modul namens MySQLdb

Ich habe erfolgreich das Rezept von SQLAlchemy auf meinem Android apk importiert, aber wenn ich die App Trog logcat laufen sehe ich den Fehler:

NO module named MySQLdb 

so habe ich versucht, auch das Rezept von MySQLdb in buildozer zugab und sagt :

No matching distribution found for MySQLdb 

Dies ist der Teil des mysql Teil Aufruf-Code:

import sqlalchemy 
from sqlalchemy import create_engine 
from sqlalchemy import MetaData, Column, Table, ForeignKey 
from sqlalchemy import Integer, String 
from sqlalchemy.sql import select 

def check_sql_list(_id, string): 
    cur = engine.connect() 
    res = cur.execute("SELECT * FROM tbl_user") 
    for x in res.fetchall(): 
     if x[_id] == string: return True 
    cur.close() 

def create_user(name,e_mail,psw): 
    if check_sql_list(1,name): 
     print 'Select another username.' 
    elif check_sql_list(2,e_mail): 
     print 'Your E-Mail have already an account.' 
    else: 
     connection = engine.raw_connection() 
     try: 
      cursor = connection.cursor() 
      cursor.callproc("sp_createUser",[name, e_mail, psw]) 
      results = list(cursor.fetchall()) 
      for a in cursor.fetchall(): 
       print a 
      print results 
      cursor.close 
      connection.commit() 
     finally: 
      connection.close() 
      print 'Account registered succesfully.' 

ip = 'localhost' 
databs = 'mydb' 
user = 'guest' 
psw = 'password' 
porta = '3306' 

engine = create_engine('mysql://' + user + ':' + psw + '@' + ip + ':' + porta + '/' + databs) 
create_user('user001','[email protected]','password') 

Wie kann ich mich mit meiner Datenbank verbinden, ohne MySQLdb-Rezepte zu benötigen? Oder wo kann ich das Rezept finden?

Antwort

0

Ich antworte auf meine eigene Frage in der Hoffnung, dass jemand es nützlich finden wird.

ich herausfinden, wie es zu lösen, verwenden Sie als Dialer mysql + mysqlconnector wie:

engine = create_engine('mysql+mysqlconnector://user00:[email protected]:3306/database') 

und fügt die Rezeptanforderungen im buildozer.spec:

requirements = kivy,sqlalchemy,mysql_connector 
0

kivy -m pip install mysql-connector

als :

import mysql.connector

arbeiten für mich :)