Example #1
0
 def first(self):
     cursor = db.get_cursor()
     sql = self.query_sql
     db.execute_sql(cursor, sql)
     rows = cursor.fetchall()
     if not rows:
         return None
     r = rows[0]
     ob = self._r2ob(r)
     return ob
Example #2
0
 def all(self):
     cursor = db.get_cursor()
     sql = self.query_sql
     db.execute_sql(cursor, sql)
     rows = cursor.fetchall()
     obs = []
     for item in rows:
         ob = self._r2ob(item)
         obs.append(ob)
     return obs
Example #3
0
    def __update(self):
        cursor = db.get_cursor()

        name_value = []

        for name, value in zip(self.field_names, self.field_values):
            name_value.append(f"{name}={value}")
        name_value_sql = ", ".join(name_value)

        sql = f"update `{self.table_name}` set {name_value_sql} where id = {self.id}"
        db.execute_sql(cursor, sql)
        db.db_commit()
Example #4
0
    def __insert(self):
        cursor = db.get_cursor()
        field_names_sql = ", ".join(self.field_names)
        field_values_sql = ", ".join(self.field_values)

        sql = f"insert into `{self.table_name}`({ field_names_sql}) values({field_values_sql})"
        db.execute_sql(cursor, sql)
        db.db_commit()

        sql = f"select id from `{self.table_name}` order by id desc;"
        db.execute_sql(cursor, sql)
        self.id = cursor.fetchone()[0]
Example #5
0
 def update(self, **kwargs):
     cursor = db.get_cursor()
     update_sql = ''
     for name, value in kwargs.items():
         if f"`{name}`" not in self.field_names + ["`id`"]:
             raise exception.ModelFieldNameException(
                 model_name=self.model_class.__name__,
                 field_name=name,
             )
         if isinstance(value, Model):
             value = value.id
         if isinstance(value, str):
             value = value.replace("'", "''")
         update_sql += f"`{name}` = '{value}',"
     if update_sql:
         update_sql = update_sql[:-1]
     sql = f"update `{self.table_name}` set {update_sql} where {self.where_sql}"
     db.execute_sql(cursor, sql)
     db.db_commit()
Example #6
0
    def try_create_table(cls):
        table_name = cls.__name__.lower()
        cursor = db.get_cursor()
        sql = f"select * from sqlite_master where type='table' AND name='{table_name}';"
        db.execute_sql(cursor, sql)
        if not cursor.fetchall():
            sql = f"drop table if exists `{table_name}`;"
            db.execute_sql(cursor, sql)

            fields_sql = ""
            for name in dir(cls):
                var = getattr(cls, name.replace("`", ""))
                if isinstance(var, Field):
                    field = var
                    field_sql = field.field_sql(name)
                    fields_sql += ", " + field_sql
            sql = f'create table `{table_name}` ("id" integer not null primary key {fields_sql});'
            db.execute_sql(cursor, sql)

            db.db_commit()
Example #7
0
 def delete(self):
     cursor = db.get_cursor()
     sql = f"delete from `{self.table_name}` where {self.where_sql}"
     db.execute_sql(cursor, sql)
     db.db_commit()