基本跟官网指引是一样的，追加了添加软链接的步骤，算是一个小坑。安装Djangopip3 install Django为django-admin.py添加软链接查看安装目录进入python命令行>>> import django >>> django.__path__ ['/home/mango/.local/lib/python3.6/site-packages/django']添加软链接sudo ln -s /安装目录/bin/django-admin.py /usr/bin/django-admin进入空文件夹后创建工程django-admin startproject samplesite进行数据迁移python manage.py migrate这会更新db.sqlite3的内容（如果不存在则会创建）启动服务默认端口8000python manage.py runserver指定端口8080python manage.py runserver 8080以上两种启动方法都默认监听本地127.0.0.1，也就是只能在本机访问，最终公开的时候如果不使用nginx做反向代理，想直接从公网访问这个服务的话需要监听0.0.0.0，启动方法如下，端口随意。python manage.py runserver 0.0.0.0:80初始化后台管理用户旧版本的Django的管理员默认用户名为 admin ，默认密码为 password 。这个默认密码是在安装Django后，首次运行 createsuperuser 命令时，会自动生成的临时密码。在创建超级用户时，可以自定义密码，如果没有设置密码，则使用该临时密码。python manage.py createsuperuser 会提示输入以下信息： 用户名 (leave blank to use 'xxxx'): 超级用户名 电子邮件地址: XXX@XXXX.XXX Password: XXXXX Password (again):XXXXX Superuser created successfully.需要注意的是，为了安全起见，应该及时修改默认密码，以避免被攻击者利用。可以使用Django的changepassword 命令来修改管理员密码。在命令行中输入以下命令python manage.py changepassword 超级用户名其中，admin 是管理员用户名，运行后会提示输入新密码。输入新密码后，管理员的密码就会被修改为指定的新密码。
用Python的一个ORM框架 SQLObject 操作 sqllite 的例子
写本文的理由百度搜出来的大多是垃圾信息。CSDN全是无脑复制的内容排版说明什么都没有，实在是无语，还是直奔官网吧。按照官方指引写了一个简单的Demo，操作数据库确实很方便。这里整理了一下贴出来供参考。官网http://www.sqlobject.org/官网示例：http://www.sqlobject.org/SQLObject.html#using-sqlobject-an-introduction安装pip3 install -U SQLObject为vscode添加自动补全提示查看安装位置：进入python命令行>>> import sqlobject >>> sqlobject.__path__将安装位置添加到.settings.json"python.autoComplete.extraPaths": ["/XXXX/lib/python3.X/site-packages/"]上代码，包括了基本的CRUD操作，直接复制粘贴运行即可，注释都写的很清楚了import sys,os from sqlobject import sqlhub from sqlobject import SQLObject from sqlobject import connectionForURI from sqlobject.col import StringCol from sqlobject.col import TinyIntCol from sqlobject.sqlbuilder import AND, LIKE, OR # 直接使用 from sqlobject import * 也可以运行，只是在vscode下缺乏代码提示 class Person(SQLObject): """ 这个例子相当于创建了以下的表 注意，驼峰命名法 的变量名 会被映射为 下划线分割 的 字段名 或 表名 CREATE TABLE person ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_name TEXT, user_age TINYINT ) """ userName = StringCol() userAge = TinyIntCol() # 使用内存数据库，退出程序就会销毁 def useMemoryDb(): connection_string = 'sqlite:/:memory:' connection = connectionForURI(connection_string) sqlhub.processConnection = connection # 使用文件数据库 def useFileDb(): db_filename = os.path.abspath('test.db') connection_string = 'sqlite:' + db_filename connection = connectionForURI(connection_string) sqlhub.processConnection = connection def playTable(): #Person._connection.debug = True #这个设置可以看到每一条命令的背后实际上在背后发生了什么（实际的SQL内容输出） print("-- 创建table") Person.createTable() print("-- 插入一条数据") row = Person(userName="芒果", userAge=10) print(" 插入完成：%s " % row) print("-- 修改一条数据") row.userName = "雨歌" print(" 修改完成：%s " % row) print("-- 再插入几条数据") xiaowang = Person(userName="小王", userAge=12) print(" 插入完成：%s " % xiaowang) row = Person(userName="小红", userAge=14) print(" 插入完成：%s " % row) row = Person(userName="小黑狗", userAge=18) print(" 插入完成：%s " % row) print("-- 用set函数修改一条数据") xiaowang.set(userName="大王", userAge=20) print(" 修改完成：%s" % xiaowang) print("-- 检索数据(userName='大王' and userAge=20)") peeps = Person.selectBy(userName="大王", userAge=20) print(" 找到 %s 条记录" % peeps.count()) print("-- 更复杂的检索(userName like '%小%' and userAge < 15)") peeps = Person.select(AND( LIKE(Person.q.userName, "%小%"), Person.q.userAge < 15)) print(" 找到 %s 条记录" % peeps.count()) print("-- 删除数据(userName='大王')") Person.deleteBy(userName="大王") print("-- 用列表遍历剩余记录") rows = list(Person.select()) for row in rows: print(" %s, %s" % (row.userName ,row.userAge)) if (__name__ == '__main__'): useMemoryDb() #useFileDb() playTable()
SeriesIndex博主给自己写的一个Typecho插件。可以在文章末尾自动添加一个【系列文章】列表，方便访客查看跟当前文章属于同系列的其他文章。例子http://blog.mangolovecarrot.net/2015/05/17/raspi-study06/下载[button color="success" icon="glyphicon glyphicon-download-alt" url="https://github.com/slipperstree/SeriesIndex/archive/master.zip"]下载SeriesIndex[/button][button color="black" icon="glyphicon glyphicon-send" url="https://github.com/slipperstree/SeriesIndex"]GitHub项目[/button]安装下载后得到文件夹【SeriesIndex】（如果你得到的是【SeriesIndex-master】那么请去掉后面的【-master】）将这个文件夹上传到Typecho的usr/plugins/ 下博客后台插件管理页面，启用SeriesIndex插件即可。使用Typecho后台管理-设置-永久链接-自定义文章路径，这里的设置不管是预定义的几种还是自定义的，要求至少要使用{slug}作为永久链接的一部分。支持永久链接定义URL样式[tag type="success"]yes[/tag]wordpress风格/archives/{slug}.html[tag type="success"]yes[/tag]按日期归档/archives/{year}/{month}/{day}/{slug}.html[tag type="success"]yes[/tag]按分类归档/{category}/{slug}.html[tag type="success"]yes[/tag]个性化定义/{year}/{month}/{day}/{slug}/[tag type="danger"]no[/tag]默认风格/archives/{cid}/写系列文章的时候，需要你手动指定slug，格式为：系列前缀 + 数字编号。比如你打算写一个关于python学习的系列文章，那么：第1篇的slug指定为：pystudy01第2篇的slug指定为：pystudy02第3篇的slug指定为：pystudy03...简言之，要求只有两个。同系列的slug前缀必须一样在前缀后面必须是数字（可以是任意位数，且同系列之间推荐使用相同位数的左补0数字，当然这不是必须的，但有可能影响列表的排序）另外，如果你想使用在你已经有的文章上也只需要简单的编辑一下你的那些文章，修改它们的slug就可以生效了。slug在Typecho的文章编辑页面是可以反复修改的。原理在显示文章内容的时候，插件会取得当前文章的slug，比如【pystudy02】，然后会去掉末尾的数字部分得到前缀【pystudy】。然后在数据库中查找拥有相同前缀slug的文章最后一并输出。
教你用树莓派打造一台便携式微信跳一跳外挂机（一）
最近微信跳一跳小游戏很火，本人属于手残星人，徒手最高跳到120。一怒之下就去万能的github上找了找，还真有人写了一个python的外挂脚本。在电脑上配好环境，连上手机打开跳一跳，回车，然后就可以一边喝茶一边看小人儿自己跳了，刷了700多我让电脑停下来了，为什么不刷到几千？因为我怂啊，会被ban的。。。不过这个不稀奇，技术流的稍微折腾折腾基本都能到这一层。带你玩点不一样的。先说好，本文绝不是怂恿大家去作弊，会没朋友的。小挂怡情大挂伤身，切记，切记。电脑上既然可以做到，为啥还要在树莓派上做呢。生命不息，折腾不止嘛。最主要的是电脑不能随身携带是吧。想想看，出门在外的时候突然有妹纸拿着手机向手残的你求助，你总不能认怂吧，这个时候你默默地从裤裆不裤袋里掏出这玩意插上手机，嘴角微微一扬。。。是不是想想就开心啊。不说废话了。下面开始做。首先，老规矩，更新系统。sudo apt-get upgrade sudo apt-get update然后，安装adbsudo apt-get install adb安装外挂程序的依赖包pip install -r requirements.txt个人环境不同，有可能这一步会出各种奇怪的错误，先不管。下载跳一跳辅助python脚本git clone https://github.com/wangshub/wechat_jump_game下面是重点首先，手机要进入开发者模式并打开USB调试开关。不同手机品牌方法会有所不同，自行百度。执行命令lsusb记住当前返回的listUSB连接手机再次执行命令lsusb会多出来一行设备，信息形如nnnn:mmmm，记下来后面会用到新建文件 sudo nano /etc/udev/rules.d/51-android.rules 内容(nnnn和mmmm用上面3记下来的内容替换掉)： SUBSYSTEM=="usb", ATTRS{idVendor}=="nnnn", ATTRS{idProduct}=="mmmm", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"输入下面的命令重启udev服务 sudo service udev restart重启adb服务 adb kill-server adb start-server重新连接手机，执行命令 adb devices 到这里大部分手机应该会返回类似下面的结果，表示adb调试模式连接成功。跳到步骤12 1fe0b46b device 如果不幸出现下面这种就继续做步骤9 ???????? permission ....新建文件 nano ~/.android/adb_usb.ini 内容只有一行(0x固定，nnnn还是用上面的替换) 0xnnnn重启adb服务 adb kill-server adb start-server重新连接手机，执行命令，这次不出意外应该成功了。 adb devices中途手机会弹出usb调试权限提示，按照提示同意即可。如果没有弹出，执行一次下面的命令就会弹出了 adb shell打开手机跳一跳游戏，进入游戏画面后，输入以下命令 python wechat_jump_auto.py看着小人儿自己跳是不是很开心。关于修改python脚本的配置文件，有空再整理。下一步打算给树莓派加一些外设，比如提供一个按钮，按钮每按下一次才跳一次。或者提供一个屏幕，可以输入指定数字，跳到大于设定的数字自动停止。 等等。。。