数据库设计是整个程序的重点之一,为了支持相关程序运行,最佳的数据库设计往往不可能一蹴而就,只能反复探寻并逐步求精,这是一个复杂的过程,也是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。下面给出了20个数据库设计最佳实践,当然,所谓最佳,还是要看它是否适合你的程序。一起来了解了解吧。使用明确、统一的标明和列名,例如School,SchoolCourse,CourceID。数据表名使用单数而不是复数,例如StudentCourse,而不是Stu
系统 2019-08-12 01:32:21 2236
python从入门到实践pdf链接:https://pan.baidu.com/s/1EGAkQfG94nlBGg-lhbkBwg提取码:vzt9如果给你带来帮助,可以给博主点赞或者关注哦。
系统 2019-09-27 17:57:10 2235
一、Linux环境和Windows环境下个人推荐推荐使用geany,个人认为这个编辑器优于pycharm,pycharm破解起来异常麻烦,而且它体积小,能够运行几乎所有的程序(而无需终端来运行)。也可以选择anaconda作为geany当做python的编辑器Linux中安装的命令如下:sudoapt-getgeanywindows中,可以点击链接https://www.geany.org/Download/Releases,然后找到Releases目录下
系统 2019-09-27 17:55:10 2235
在Django2.2+python3.7环境下,使用MySQL作为数据库引擎,执行makemigrations会出现AttributeError:'str'objecthasnoattribute'decode'错误.初步推断是因为使用PyMySQL代替mysqlclient的原因,而django本身的代码都是针对mysqlclient写的.PyMySQL这里传入的会是一个str类型,而str类型没有decode方法所以报错.在网上找到了一个暂时的解决方法
系统 2019-09-27 17:53:35 2235
logging库提供了两个可以用于日志滚动的class(可以参考https://docs.python.org/2/library/logging.handlers.html),一个是RotatingFileHandler,它主要是根据日志文件的大小进行滚动,另一个是TimeRotatingFileHandler,它主要是根据时间进行滚动。在实际应用中,我们通常根据时间进行滚动,因此,本文中主要介绍TimeRotaingFileHandler的使用方法(R
系统 2019-09-27 17:52:54 2235
这个问题是如何在一些场景下使用断言表达式,通常会有人误用它,所以我决定写一篇文章来说明何时使用断言,什么时候不用。为那些还不清楚它的人,Python的assert是用来检查一个条件,如果它为真,就不做任何事。如果它为假,则会抛出AssertError并且包含错误信息。例如:py>x=23py>assertx>0,"xisnotzeroornegative"py>assertx%2==0,"xisnotanevennumber"Traceback(mostr
系统 2019-09-27 17:51:11 2235
Image模块Image模块是在PythonPIL图像处理中常见的模块,对图像进行基础操作的功能基本都包含于此模块内。如open、save、conver、show…等功能。open类Image.open(file)⇒imageImage.open(file,mode)⇒image要从文件加载图像,使用open()函数,在Image模块:@zhangzijufromPILimportImage##调用库im=Image.open("E:\mywife.jpg
系统 2019-09-27 17:50:26 2235
在Python中对象的赋值其实就是对象的引用。当创建一个对象,把它赋值给另一个变量的时候,python并没有拷贝这个对象,只是拷贝了这个对象的引用而已。浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复制深拷贝:外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制。深浅拷贝的作用1,减少内存的使用2,以后在做数据的清洗、修改或者入
系统 2019-09-27 17:48:59 2235
本文实例讲述了Python从函数参数类型引出元组。分享给大家供大家参考,具体如下:自定义函数:特殊参数defshow(name="jack",*info):print(name)#jackprint(info)#(22,'男')show("jack",22,"男")可以看出22,"男"全部归为了函数的第二个参数*info。我们可以看到打印这个info参数结果是:小括号包起来的形式。函数的特殊参数升级上面见识了函数参数*xxx这种形式,下面看看2个*的形式。
系统 2019-09-27 17:48:48 2235
使用socket实现tcp通信,需导入socket模块1、服务端主要步骤:(1)创建socket:socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None)family:AF_INET,AF_INET6,AF_UNIX,AF_CAN,AF_PACKET,AF_RDStype:SOCK_STREAM,SOCK_DGRAM,SOCK_RAW,或者其他SOCK_*proto:一般使用默认值
系统 2019-09-27 17:48:40 2235