01/10/2018, 11:18

Python - vì sao database không edit được?

Các bác cho em hỏi database của em không INSERT, UPDATE, DELETE được, chỉ SELECT được thôi. Túm lại là không ghi được, chỉ đọc được thôi là vì sao ạ?

Về lỗi database em nghĩ là không phải vì trước đó em vẫn ghi bình thường. Chỉ có giờ viết đoạn code khác thì không ghi được thôi.

Đây là cách em tổ chức SQL

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pymysql
import pymysql.cursors

class sskDATABASE(object):

    def ConnectDB(self, data):
        self.db = pymysql.connect(data['db_host'], data['db_user'], data['db_pass'], data['db_name'], charset=data['charset'])
        self.cursor = self.db.cursor(pymysql.cursors.DictCursor)        

    def runSQL(self,sql):
        try:
            print sql
            self.cursor.execute(sql)
            return  self.cursor.fetchall()
        except:
            print 'ERROR: ',sql
            self.db.rollback()
            return '
    def getLastID(self):
        return self.cursor.lastrowid

########################################################################
########################################################################
########################################################################
class database_crawler(sskDATABASE):
    data = {
        'db_host' : 'xxxxxxxxx',
        'db_user' : 'sosanka_ssg',
        'db_pass' : 'halflifea',
        'db_name' : 'sosanka_crawler',
        'charset' : 'utf8'
    }
    def __init__(self):
        self.ConnectDB(self.data)

class database_websosanka(sskDATABASE):
    data = {
        'db_host': 'xxxxxxxxx',
        'db_user': 'sosanka_ssg',
        'db_pass': 'halflifea',
        'db_name': 'sosanka_ssg',
        'charset': 'utf8'
    }

    def __init__(self):
        self.ConnectDB(self.data)
Dark.Hades viết 13:28 ngày 01/10/2018

Thế này có kinh nghiệm giời mới giúp bạn được

Chắc bạn đang làm ORM?

Hà Temwin viết 13:26 ngày 01/10/2018

Đây là cách em tổ chức file mySQL, các bác xem và góp ý giúp em với em có gì sai sót không? Mục đích của em là lấy dữ liệu từ bảng này chuyển sang bảng kia nên em khai báo 2 database.

Và hiện tại thì cả 2 database của em đều không ghi được với cấu trúc này. Chỉ đọc được thôi.

   #!/usr/bin/env python
    # -*- coding: utf-8 -*-

import pymysql
import pymysql.cursors

class sskDATABASE(object):

    def ConnectDB(self, data):
        self.db = pymysql.connect(data['db_host'], data['db_user'], data['db_pass'], data['db_name'], charset=data['charset'])
        self.cursor = self.db.cursor(pymysql.cursors.DictCursor)        

    def runSQL(self,sql):
        try:
            print sql
            self.cursor.execute(sql)
            return  self.cursor.fetchall()
        except:
            print 'ERROR: ',sql
            self.db.rollback()
            return ''
    def getLastID(self):
        return self.cursor.lastrowid

########################################################################
########################################################################
########################################################################
class database_crawler(sskDATABASE):
    data = {
        'db_host' : 'xxxxxxxxx',
        'db_user' : 'sosanka_ssg',
        'db_pass' : 'halflifea',
        'db_name' : 'sosanka_crawler',
        'charset' : 'utf8'
    }
    def __init__(self):
        self.ConnectDB(self.data)

class database_websosanka(sskDATABASE):
    data = {
        'db_host': 'xxxxxxxxx',
        'db_user': 'sosanka_ssg',
        'db_pass': 'halflifea',
        'db_name': 'sosanka_ssg',
        'charset': 'utf8'
    }

    def __init__(self):
        self.ConnectDB(self.data)
Dark.Hades viết 13:27 ngày 01/10/2018

Sau khi bạn dùng insert/update thì nó có trả lại cái gì hay throw gì không?
Câu lệnh bạn dùng insert là gì?, test thử với parent class trước chưa?

Hà Temwin viết 13:29 ngày 01/10/2018

Sau khi bạn dùng insert/update thì nó có trả lại cái gì hay throw gì không?
Câu lệnh bạn dùng insert là gì?, test thử với parent class trước chưa?

Lệnh của em đảm bảo chuẩn.
Em dùng lệnh select thì ok
Lệnh update, Em print lệnh ra paste thử vào phpmyadmin vẫn ok.
Em đặt trong cặp try: … except:… mà không thấy lỗi gì báo lên cả.

Hà Temwin viết 13:23 ngày 01/10/2018

Đây rồi ạ.
Trong Python còn cần phải có cái này sau câu lệnh insert, update nữa

db.commit()

Hix.
Chia sẻ để những bạn đi sau rút kinh nghiệm.
hiu hiu

Bài liên quan
0