отправлять данные Excel в MySQL в python - PullRequest
0 голосов
/ 20 марта 2020

при вставке данных в базу данных mysql выдает «MySQLdb._exceptions.OperationalError: (1046,« База данных не выбрана »). Я проверил шаг за шагом в этом фрагменте кода. база данных была подключена. Но это показывает вышеуказанную ошибку.

Вот мой запрос, созданный базой данных.

create table database_conn(id int,name varchar(20),age int(100),address varchar(50),state varchar(10), zipcode int(20));

Вот мой python фрагмент кода для вставки данных в базу данных.

class Database_conn:
def __init__(self,host,user,password,database,file_name):
    self.host = host
    self.user = user
    self.password = password
    self.database = database
    self.file_name = file_name
    self.conn()
    self.excel_sheet()
    self.db_query()

def conn(self):
    self.mydb = MySQLdb.connect(host=self.host,
                                user = self.user,password = self.password)


def excel_sheet(self):
    self.book = xlrd.open_workbook(self.file_name)
    self.sheet = self.book.sheet_by_name("Sheet1")
    try:
        self.cursor = self.mydb.cursor()
        print('established cursor connection')
    except:
        print('something goes worng')

def db_query(self):

    global values, conn
    self.query = """INSERT INTO database_conn(id,name,age,address,state,zipcode)VALUES(%s,%s,%s,%s,%s,%s)"""

    for i in range(1,self.sheet.nrows):
        id = self.sheet.cell(i,0).value
        name = self.sheet.cell(i,1).value
        age = self.sheet.cell(i,2).value
        address = self.sheet.cell(i,3).value
        state = self.sheet.cell(i,4).value
        zipcode = self.sheet.cell(i,5).value
        values = (id, name, age, address, state, zipcode)
        conn = self.cursor
        conn.execute(self.query, values)
        conn.commit()
        conn.close()


file_name = input('Enter a file_name : ')
d=Database_conn('localhost','****','****','****',file_name)

В приведенном выше коде я получаю сообщение об ошибке в этой строке

conn.execute(self.query, values) 

1 Ответ

0 голосов
/ 21 марта 2020

Наконец я вставил данные в свою базу данных.

Вот мой ответ:

class Database_conn:
   def __init__(self,host,user,password,database,file_name):
       self.host = host
       self.user = user
       self.password = password
       self.database = database
       self.file_name = file_name
       self.conn()
       self.excel_sheet()
       self.db_query()
       self.db_close()

def conn(self):
       self.mydb = MySQLdb.connect(host=self.host,
                            user = self.user,password = self.password,db=self.database)


def excel_sheet(self):
   self.book = xlrd.open_workbook(self.file_name)
   self.sheet = self.book.sheet_by_name("Sheet1")
   try:
      self.cursor = self.mydb.cursor()
      print('established cursor connection')
   except:
      print('something goes worng')

def db_query(self):

   global values, conn
   self.query = """INSERT INTO database_conn(id,name,age,address,state,zipcode)VALUES(%s,%s,%s,%s,%s,%s)"""

   for i in range(1,self.sheet.nrows):
     id = self.sheet.cell(i,0).value
     name = self.sheet.cell(i,1).value
     age = self.sheet.cell(i,2).value
     address = self.sheet.cell(i,3).value
     state = self.sheet.cell(i,4).value
     zipcode = self.sheet.cell(i,5).value
     values = (id, name, age, address, state, zipcode)
     conn = self.cursor
     conn.execute(self.query, values)
     conn.close()

 def db_close(self):
     self.database.commit()
     self.database.commit()




file_name = input('Enter a file_name : ')
d=Database_conn('localhost','****','****','*****',file_name)
...