勿忘,须舍

  • 首页

  • 标签

  • 分类

  • 归档

  • python 随记

  • 关于

  • 搜索

python pip 用法

发表于 2021-01-27 分类于 python

pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。

阅读全文 »

python 异常记录

发表于 2021-01-27 分类于 python

数据库异常记录

django.core.exceptions.ImproperlyConfigured: Field name transerver is not valid for model SysTask

日志信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[2021-02-04 10:35:07] [log.py:log_response:228] ERROR Internal Server Error: /api/v2/migratetasks/sys_task/
Traceback (most recent call last):
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/django/core/handlers/base.py", line 124, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib64/python3.6/contextlib.py", line 52, in inner
return func(*args, **kwds)
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/django/views/generic/base.py", line 68, in view
return self.dispatch(request, *args, **kwargs)
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/rest_framework/views.py", line 483, in dispatch
response = self.handle_exception(exc)
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/rest_framework/views.py", line 443, in handle_exception
self.raise_uncaught_exception(exc)
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/rest_framework/views.py", line 480, in dispatch
response = handler(request, *args, **kwargs)
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/rest_framework/generics.py", line 192, in post
return self.create(request, *args, **kwargs)
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/rest_framework/mixins.py", line 20, in create
serializer.is_valid(raise_exception=True)
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/rest_framework/serializers.py", line 236, in is_valid
self._validated_data = self.run_validation(self.initial_data)
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/rest_framework/serializers.py", line 434, in run_validation
value = self.to_internal_value(data)
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/rest_framework/serializers.py", line 482, in to_internal_value
fields = self._writable_fields
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/django/utils/functional.py", line 37, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/rest_framework/serializers.py", line 370, in _writable_fields
field for field in self.fields.values() if not field.read_only
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/rest_framework/serializers.py", line 363, in fields
for key, value in self.get_fields().items():
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/rest_framework/serializers.py", line 1045, in get_fields
source, info, model, depth
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/rest_framework/serializers.py", line 1190, in build_field
return self.build_unknown_field(field_name, model_class)
File "/opt/virtual_env/backend_env/lib/python3.6/site-packages/rest_framework/serializers.py", line 1302, in build_unknown_field
(field_name, model_class.__name__)
django.core.exceptions.ImproperlyConfigured: Field name `transerver` is not valid for model `SysTask`.

原因分析:

串行器(serializers.ModeSerializer)中调用的models里面的字段不对而导致的,即在serializers的fields列表里引入了model中不存在的字段

1
2
3
4
5
6
7
class SysTaskSerializer(serializers.ModelSerializer):

class Meta:
model = SysTask
fields = ("id", "user", "task_name", "region_id", "zone_id", "zone_name",
"bandwidth_limit", "is_automatically", "account", "source",
"disk_list", "target_server", "transerver", "start_time")

例如上述序列化中,SysTask表中没有transerver字段,在序列化中引入就会引发上述错误

处理:

查看是否引入了不存在的字段,或引入的字段与model中定义的字段不同,删掉或修改即可

python 安装虚拟环境

发表于 2021-01-26 分类于 python

虚拟环境用于管理不同版本或不用项目的pyhton开发环境。

阅读全文 »

python描述器使用指南

发表于 2021-01-20 分类于 python

定义和简介

一般地,一个描述器是一个包含 “绑定行为” 的对象,对其属性的访问被描述器协议中定义的方法覆盖。这些方法有:__get__(),__set__() 和 __delete__()。如果某个对象中定义了这些方法中的任意一个,那么这个对象就可以被称为一个描述器。

属性访问的默认行为是从一个对象的字典中获取、设置或删除属性。例如,a.x 的查找顺序会从 a.__dict__['x'] 开始,然后是 type(a).__dict__['x'],接下来依次查找 type(a) 的基类,不包括元类。 如果找到的值是定义了某个描述器方法的对象,则 Python 可能会重载默认行为并转而发起调用描述器方法。这具体发生在优先级链的哪个环节则要根据所定义的描述器方法及其被调用的方式来决定。

阅读全文 »

Django 序列化问题

发表于 2021-01-19 分类于 python

django 序列化类中,若涉及到默认值时,在项目启动后,其值不会再修改,如示例中的date_expired字段,即为项目启动时的时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class RegistionSerializer(serializers.ModelSerializer):
"""注册"""
phone = serializers.CharField(required=True, allow_blank=False,
allow_null=False)
smscode = serializers.CharField(
required=True, write_only=True, help_text='验证码', max_length=6
)
password = serializers.CharField(write_only=True)
created_by = serializers.CharField(default="Registion")
source = serializers.CharField(default=User.SOURCE_REGISTION)
date_expired = serializers.DateTimeField(
default=timezone.now() + timezone.timedelta(days=3))

class Meta:
model = User
fields = [
'id', 'name', 'username', 'phone', 'smscode', 'password',
'created_by', 'source', 'date_expired'
]
read_only_fields = ['id']

# 通过再次赋值进行修改
def validate(self, attrs):
attrs["date_expired"] = timezone.now() + timezone.timedelta(days=3)
return attrs

python 连接远程服务器

发表于 2021-01-15 分类于 python

paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography)

阅读全文 »

Linux 密码修改

发表于 2021-01-14 分类于 Linux

介绍

Linux passwd命令用来更改使用者的密码

阅读全文 »

pymysql 使用

发表于 2021-01-13 分类于 pymysql

连接MySQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import pymysql

# config
HOST = '103.21.116.89'
PORT = 3306
USER = 'root'
PASSWD = 'QAZ!123#'
DB = 'ts_model'
CHARSET = 'utf8'

# connect mysql
connection = pymysql.connect(host=HOST, port=PORT, user=USER, passwd=PASSWD,
db=DB, charset=CHARSET)

cursor = connection.cursor()

插入单条数据

1
2
3
4
5
6
7
8
9
10
try:
sql = "insert into ts_bigdata(age,score,name) values (%s,%s,'%s');"
cursor.execute(sql % (age, score, name))
except Exception as e:
connection.rollback()
else:
connection.commit()
finally:
cursor.close()
connection.close()

插入多条数据

1
2
3
4
5
6
7
8
9
10
try:
sql = "insert into ts_bigdata(age,score,name) values (%s,%s,%s);"
cursor.executemany(sql, [('age1', 'score1', 'name1'), ('age2', 'score2', 'name2')])
except Exception as e:
connection.rollback()
else:
connection.commit()
finally:
cursor.close()
connection.close()

异常处理

pymysql.err.OperationalError: (1045, “Access denied for user ‘root’@’43.254.54.249’ (using password: YES)”)

  • 更换root密码的认证方式为mysql_native_password
1
mysql> ALTER USER 'root'@'43.254.54.249' IDENTIFIED WITH mysql_native_password BY 'QAZ!123#';
  • 授权
1
2
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'43.254.54.249' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

mysql 锁机制

发表于 2020-12-29 分类于 mysql

MySQL锁概述

相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。

阅读全文 »

MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用

发表于 2020-12-29 分类于 mysql

MySQL有两种常用的引擎类型:MyISAM和InnoDB。目前只有InnoDB引擎类型支持外键约束。外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。
主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。一个表可以有一个或多个外键,外键可以为空值,若不为空值,则每一个外键的值必须等于主表中主键的某个值。
定义外键时,需要遵守下列规则:

  • 主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。
  • 必须为主表定义主键。
  • 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。
  • 在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。
  • 外键中列的数目必须和主表的主键中列的数目相同。
  • 外键中列的数据类型必须和主表主键中对应列的数据类型相同。
阅读全文 »
1234…16
Mr Wang

Mr Wang

行动了才会有故事,说出来才会有结果。
154 日志
59 分类
43 标签
RSS
GitHub E-Mail Weibo
© 2022 Mr Wang
总访问量次 | 总访客数人