2020年12月28日 星期一
轉址怎麼設定
2020年12月2日 星期三
Pandas 容易踩的坑(持續更新)
2020年11月2日 星期一
Docker MySQL cheat list
先移到打算存備份檔案的資料夾裡面
再執行
docker cp <container id>:<path inside container, eg. /home/mysql.sql> .
這樣子就已經把備份檔存到本機目前所在資料夾裡面了。
之後,再把檔案移到新的容器裡
docker exec -i <container id> sh -c 'cat > <path you want to store the data, eg. /home/mysql.sql' < <備份檔案名, e.g. mysql. sql>
再來要進去那個容器
mysql -uroot -p <database name you backed up> < <path to the back up file, eg. /home/my first.sql >
登進去看看
mysql -uroot -p
>SHOW DATABASES;
就完成囉!
2020年10月23日 星期五
csv的大坑
2020年10月1日 星期四
Json常用指令
當跟數據科學家合作案件,常常是用json傳遞資料。我們如果從資料庫拉資料出來,也常常是dictionary格式。
這裡梁哥整理一下平常常用的指令,作為一個cheat sheet。
假設出現json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes
你就需要將單引號換成雙引號,
str = str.replace(" \' ", " \" ")
如果需要轉成dictionary,就要搭配json.loads()
dictionary = json.loads(str)
2020年9月30日 星期三
2020年9月22日 星期二
Django formset用法
這周在作表單,發現這實在是個大坑啊…花了很多時間在這個上面。
首先,推薦使用model formset_factory,因為方便不少。這個功能的特色是可以直接調用
formset = myformset(request.POST)
if formset.is_valid():
formset.save()
return redirect <the view u want to redirect>
那要怎麼用呢?
你可以選擇在forms.py裡面import
from django.forms import modelformset_factory
class FakeForm(forms.ModelForm):
class Meta:
Model = Foo
fields = ('list of the fields')
FakeFormset = modelformset_factory(Foo, FakeForm, extra=<how many u want>)
是不是很方便呢?
如果需要更高的可控性,只好使用一般的formset,缺點就是你得自己處理裡面的表單們。
formset = FooFormset(request.POST)
if formset.is_valid:
for form in formset:
field = form.cleaned_data.get('the input field name of the form')
<other fields>
instance = Foo.objects.create(field=field, ....)
instance.save()
return redirect ('<the view you want to redirect the user>')
這樣做就可以一次新增很多筆資料了。
2020年9月14日 星期一
Django 如何在url傳入參數
2020年8月31日 星期一
201911 慕尼黑機場T2漢莎非申根區貴賓室
2020年8月20日 星期四
Django 出現OSError
最近踩了Django的坑,覺得一定要記錄一下,不然太虧了。
出現的錯誤訊息是
OSError at <路徑>
[Error 5] inputoutput error
這遇到的時候,真心讓人覺得頭疼。因為找不到相關的資訊。後來想起來,之前有網友提醒,一定要在上線前,把所有的print改掉。才發現原來是console被關到,產生出來的錯誤訊息。
意思是程式碼說要print,可是沒有console,我要怎麼print的意思
這時候,只有重新啟動程序一途了。而且要由nohup接管,就沒問題了。
PYTHONIOENCODING=utf-8 nohup python3 manage.py runserver 0:<port you want to open> &
是不是很坑呢?
2020年8月13日 星期四
pip 的貼心小功能們
2020年8月3日 星期一
寫入excel的package:xlrd
要怎麼辦呢?其實python本身有個可以把日期變成文字的方法,叫做strftime
https://www.programiz.com/python-programming/datetime/strftime
例如:
from datetime import datetime
a = datetime.now()
a.strftime(%c)
即可產出我們習慣的文字格式時間喲。 敬請多加利用。
2020年7月30日 星期四
使用pandas去除資料中的缺失值
2020年7月21日 星期二
Chart.js產生帶有百分比的圖表
2020年7月13日 星期一
使用django 產出amCharts.js 所需要的資料格式
原因是當div空間不夠時,Chart.js的長條圖例文字會模糊不清。
不過這兩個套件要求的格式完全不同。
我們來看看amChart.js官方網站的長條圖示例。
<!-- Styles --> <style> #chartdiv { width: 100%; height: 500px; } </style> <!-- Resources --> <script src="https://www.amcharts.com/lib/4/core.js"></script> <script src="https://www.amcharts.com/lib/4/charts.js"></script> <script src="https://www.amcharts.com/lib/4/themes/animated.js"></script> <!-- Chart code --> <script> am4core.ready(function() { // Themes begin am4core.useTheme(am4themes_animated); // Themes end // Create chart instance var chart = am4core.create("chartdiv", am4charts.XYChart); // Add data chart.data = [{ "country": "USA", "visits": 2025 }, { "country": "China", "visits": 1882 }, { "country": "Japan", "visits": 1809 }, { "country": "Germany", "visits": 1322 }, { "country": "UK", "visits": 1122 }, { "country": "France", "visits": 1114 }, { "country": "India", "visits": 984 }, { "country": "Spain", "visits": 711 }, { "country": "Netherlands", "visits": 665 }, { "country": "Russia", "visits": 580 }, { "country": "South Korea", "visits": 443 }, { "country": "Canada", "visits": 441 }, { "country": "Brazil", "visits": 395 }]; // Create axes var categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis()); categoryAxis.dataFields.category = "country"; categoryAxis.renderer.grid.template.location = 0; categoryAxis.renderer.minGridDistance = 30; categoryAxis.renderer.labels.template.adapter.add("dy", function(dy, target) { if (target.dataItem && target.dataItem.index & 2 == 2) { return dy + 25; } return dy; }); var valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); // Create series var series = chart.series.push(new am4charts.ColumnSeries()); series.dataFields.valueY = "visits"; series.dataFields.categoryX = "country"; series.name = "Visits"; series.columns.template.tooltipText = "{categoryX}: [bold]{valueY}[/]"; series.columns.template.fillOpacity = .8; var columnTemplate = series.columns.template; columnTemplate.strokeWidth = 2; columnTemplate.strokeOpacity = 1; }); // end am4core.ready() </script> <!-- HTML --> <div id="chartdiv"></div>
Note: Above is the demo code of AmCharts.js
Original site: https://www.amcharts.com/demos/simple-column-chart/
不難發現對Django來說,需要從DB裡面query出所需的Queryset,再轉換成這個套件所需要的格式,需要花上一些時間。
不過確實是好物。
下次再跟大家分享這個部分。
先這樣了,拜。
2020年7月11日 星期六
Django針對欄位計算百分比
以上是原文出處。
基本上,這個回答的重點是在儲存問卷相關值時,其實應該儲存成不同的model class。
<model name>.objects.values('<group by 欄位名稱>').annotate(<計算出來欄位名稱>=Count('id')).order_by()
*SQL裡面你可以group by很多欄位,這裡也可以,例如:Book.objects.values('name', 'code').annotate(count=Count('id')).order_by
這樣會預設按照query結果的第一個欄位排序,例如:name, 而不是計算出來欄位名稱
2020年7月7日 星期二
Django Cheat Sheet
Since I have got in the age that needs more record than my memory.
I'll just write them down here.
# create the directory
mkdir <project name>
cd <project name>
# In windows env, initiate virtual env.
python -m venv my_venv
In
mysite/settings.py, add '<app_name>' in installed apps.
Then everything is done.