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)

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

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

Đâ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)

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ả.

Đâ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

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?