小工具包
md5加密
import hashlib
def md5_str(cont: str):
pwd = hashlib.md5()
pwd.update(cont.encode(encoding='utf-8'))
return pwd.hexdigest()
# 其实内部还需要进行判断处理下的.
uuid的生成和加密
import hashlib
import uuid
def md5_str(conts:str): # md5加密
pwd = hashlib.md5()
pwd.update(cont.encode(encoding='utf-8'))
return pwd.hexdigest()
def production_uuid(): # 产生uuid
return str(uuid.uuid1())
def production_md5_uu(things): # 产生32位加密
uu_id = production_uuid()
str_things = str(things).strip().replace(" ", '')
if not str_things:
return md5_str(uu_id)
return md5_str(uu_id + str_things)
UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字
url的解析
from urllib.parse import parse_qs, urlparse
def parse_url(url_str):
parse_qs_url = parse_qs(url_str)
urlparse_url = urlparse(url_str)
query_item = dict([(k, v[0]) for k, v in parse_qs(urlparse(url_str).query).items()])
return {
'parse_qs_url': parse_qs_url,
'urlparse_url': urlparse_url, # 这个可以直接使用 urlparse_url.scheme / urlparse_url.netloc
'query_item': query_item,
}
res={'parse_qs_url': {'https://app.yangkeduo.com/order_checkout.html?sku_id': ['1013274264107'], 'goods_id': ['57188436403'], 'goods_number': ['1'], 'page_from': ['35'], 'refer_page_element': ['local_group'], 'source_channel': ['1'], 'refer_page_name': ['goods_detail']}, 'urlparse_url': ParseResult(scheme='https', netloc='app.yangkeduo.com', path='/order_checkout.html', params='', query='sku_id=1013274264107&goods_id=57188436403&goods_number=1&page_from=35&refer_page_element=local_group&source_channel=1&refer_page_name=goods_detail', fragment=''), 'query_item': {'sku_id': '1013274264107', 'goods_id': '57188436403', 'goods_number': '1', 'page_from': '35', 'refer_page_element': 'local_group', 'source_channel': '1', 'refer_page_name': 'goods_detail'}}
这个根据自己的需要进行调整吧.
秒换成小时
from time import gmtime, strftime
print(strftime("%H:%M:%S", gmtime(60)))
消息队列
# -*-coding:utf-8 -*-
import hashlib
import time
from collections import deque
def md5_str(cont):
cont = str(cont).strip().replace("\n", "")
pwd = hashlib.md5()
# 将 b串 或者 Unicode 转成字符串
pwd.update(cont.encode(encoding='utf-8'))
return pwd.hexdigest()
class BASE_Url_Manage(object):
def __init__(self):
# 未爬取URL列表,已爬取URL列表
self.new_urls = deque()
self.old_urls = set()
# 判断管理器中是否有新的待扒取的URL
def has_new_url(self):
return len(self.new_urls) != 0
# 获取一个新的待扒取的URL
def get_new_url(self):
# pop方法:获取列表中的一个URL并移除它
new_url = self.new_urls.popleft()
new_url_1 = md5_str(new_url)
self.old_urls.add(new_url_1)
return new_url
# 向管理器添加一个新的URL
def add_new_url(self, url):
if url is None:
return
# 发现新的未添加的URL,则加入待扒取URL列表
new_url_1 = md5_str(url)
if url not in self.new_urls and new_url_1 not in self.old_urls:
self.new_urls.append(url)
# 向管理器添加批量多个新的URL
def add_new_urls(self, urls):
if urls is None or len(urls) == 0:
return
for url in urls:
self.add_new_url(url)
# 清空队列
def clear_urls(self):
self.new_urls.clear()
self.old_urls.clear()
def clear_old_url(self, pop_1):
self.old_urls.discard(pop_1)
time.sleep(10)
# 队列整个取出 并且转移到旧的队列里
def get_new_url_list(self):
new_url_list = []
# pop方法:获取列表中的一个URL并移除它
for i in range(0, len(self.new_urls)):
new_url = self.new_urls.popleft()
new_url_list.append(new_url)
new_url_1 = md5_str(new_url)
self.old_urls.add(new_url_1)
return new_url_list
导出库
pip freeze > requirements.txt
django 创建项目
django-admin startproject project_name
django mysql 配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'xx', # 数据库名
'USER': 'xx', # 账号
'PASSWORD': 'xx', # 密码
'HOST': 'xx', # HOST
'PORT': 'xx', # 端口
}
}
django 创建app
django-admin startapp app_name
django 启动
python manage.py runserver 0.0.0.0:8899
django admin 创建用户
python manage.py createsuperuser
django admin 管理后台设置
# Register your models here.
from django.contrib import admin
from dataOperation.models import ChineseCityNumber, **
admin.site.site_header = 'SQL管理后台' # 设置header
admin.site.site_title = 'SQL管理后台' # 设置title
admin.site.index_title = 'SQL管理后台'
admin.site.register(ChineseCityNumber)
admin.site.register(**)
django 数据库
python manage.py makemigrations
python manage.py migrate
python manage.py makemigrations
python manage.py migrate
django 静态文件
python manage.py collectstatic
django 时间语言设置
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
django 跨域
pip install django-cors-headers
INSTALLED_APPS
INSTALLED_APPS = [
"****",
'django.contrib.staticfiles',
'corsheaders', # 注册app corsheaders
]
MIDDLEWARE
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware', # 加入中间键 位置必须在这里 不能在其他位置
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'******'
# 在 setting.py 末尾添加以下设置
# --------跨域
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = ()
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
'VIEW',
)
CORS_ALLOW_HEADERS = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
)
django orm 外部调用
import os
import sys
import django
# 将项目路径添加到系统搜寻路径当中,查找方式为从当前脚本开始,找到要调用的django项目的路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
# 设置项目的配置文件 不做修改的话就是 settings 文件
os.environ['DJANGO_SETTINGS_MODULE'] = 'django_project.settings'
django.setup() # 加载项目配置
from run.models import xxxx
print(xxxx.objects.all())
Linux_Mongodb设置密码
use admin
给admin设置用户密码:user: 用户名, pwd: 用户密码,roles: 用来设置用户的权限,比如读,读写 等等
db.createUser({user: 'root', pwd: '123456', roles: ['root']})
db.auth('root', '123456')
./mongo -uroot -p123456
Linux_mysql 开启远程访问
mysql -u root -p
use mysql;
update mysql.user set host = '%' where user = 'root';
flush privileges;
时间装饰器
import time
def timer(func):
def wrapper(*args, **kwargs):
start = time.time()
res = func(*args, **kwargs)
print('共耗时约%.3f秒' % (time.time() - start))
return res
return wrapper