SQL Archery 代码说明及优化(一)如何深入理解和高效实践?

摘要:1.字段加密--django-mirage-field 一个django模型字段,在保存到数据库时对数据进行加密,在从数据库获取数据时进行解密。它使数据库中的数据始终加密。 A Django model fields collection
1.字段加密--django-mirage-field 一个django模型字段,在保存到数据库时对数据进行加密,在从数据库获取数据时进行解密。它使数据库中的数据始终加密。 A Django model fields collection that encrypt your data when save to and decrypt when get from database. It keeps data always encrypted in database. Base on AES, it supports query method likeget()andfilter()in Django. Mirage can also migrate data from origin column to encrypted column in database with a good performance. 需要导入的模块为; from mirage.crypto import Crypto 案例: from mirage.crypto import Crypto c = Crypto() # key is optional, default will use settings.SECRET_KEY ###密钥是可选的,默认情况下将使用settings.secret处的key c.encrypt('some_address') # -bYijegsEDrmS1s7ilnspA== c.decrypt('-bYijegsEDrmS1s7ilnspA==') # some_address https://github.com/luojilab/django-mirage-field https://www.cnpython.com/pypi/django-mirage-field 2.SQL Server 语句不能完整执行的问题 变动的文件为/sql/engines/mssql.py,修改的方法是execute_check和execute 。 在split_sql = [f"""use [{db_name}]"""] 代码行后面,添加以下语句: split_sql = split_sql + ['SET NOCOUNT ON;'] #### 解决SQL Server 语句出现更新失败的情况,失败指执行不报错,但是SQL语句完全没有执行或只执行了部分语句。 参考网址 ; https://www.cnpython.com/qa/402147 3. 其中Redis 的安装 Redis安装包下载路径 如下: https://redis.io/download 如果下载的版本是redis-5.0.14.tar.gz redis 的启动命令: ./redis-server /XXXXX/redis-5.0.14/redis.conf 密码设置可参照 https://www.cnblogs.com/xincha/p/16165760.html 4.异步调用async_task 很多地方 是异步调用的,使用的是django_q中的async_task。 from django_q.tasks import async_task 关于async_task的运行环境,其设置来自于settings.py.在.../archery/settings.py中设置. Welcome to Django Q 【官方文档】 https://django-q.readthedocs.io/en/latest/index.html 5.get_object_or_404 get_object_or_404 是Django的django.shortcuts的方法,用来查询数据,或者抛出一个DoesNotExist的异常。 用的是ORM中的get方法。 Def get_object_or_404(klass,*args,**kwargs): 需要三个参数: klass 是一个model对象或者是一个mange.query 对象 *args和**kwargs 是查询使用到的参数(在klass中查询)。 6.GoInception兼容域名 可能遇到的问题 我们知道GoInception是支持IP,例如在备份服务器上,备份库的命名格式为:IP_PORT_库名,例如127_0_0_1_3306_test。 如果需要支持兼容域名,则下面的三个问题需要留意: (1)数据库的命名规则时不能超过64位,如果是域名_端口_库名,很容易超过64位。
阅读全文