django中连接mysql数据库的操作步骤
django中连接mysql数据库的操作步骤:
1 settings配置⽂件中
DATABASES = {
'default': {
'ENGINE': 'django.sql',
'NAME': 'orm02', # 库的名字
'USER':'root', # 数据库的⽤户名
'PASSWORD':'666', # 数据库的密码
'HOST':'127.0.0.1',
'PORT':3306,
}
}
2 项⽬⽂件夹下的init⽂件中写上下⾯内容,⽤pymysql替换mysqldb
import pymysql
pymysql.install_as_MySQLdb()
3 models⽂件中创建⼀个类
class UserInfo(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=10)
bday = models.DateField()
checked = models.BooleanField()
4 执⾏数据库同步指令,添加字段的时候别忘了,该字段不能为空,所有要么给默认值,要么设置它允许为空 null=True
python manage.py makemigrations
# 在终端运⾏这句代码的时候,会在应⽤的下的migrations⽂件夹下创建⼀个⽂件,这个⽂件名是默认的,记录你的建表操作,并且将你的建表语句翻译成sql语句 python manage.py migrate
# 运⾏这个命令时,就会在你的mysql数据库中创建这张表,⽣成的表名字前⾯会⾃带应⽤的名字
#每次修改了models⾥⾯的内容或者添加了新的app,新的app⾥⾯写了models⾥⾯的内容,都要执⾏这两条
5 创建记录(实例⼀个对象,调⽤save⽅法)
def query(request):
# 创建⼀条记录,增
new_obj = models.UserInfo(
id=2,
name='⼦⽂',
bday='2019-09-27',
checked=1,
)
new_obj.save()
#翻译成sql语句,然后调⽤pymysql,发送给服务端 insert into app01_userinfo values(2,'⼦⽂','2019-09-27',1)
return HttpResponse('xxx')
常⽤字段和参数
<1> CharField
字符串字段, ⽤于较短的字符串.
CharField 要求必须有⼀个参数 maxlength, ⽤于从数据库层和Django校验层限制该字段所允许的最⼤字符数.
<2> IntegerField
#⽤于保存⼀个整数.
<3> DecimalField
⼀个浮点数. 必须提供两个参数:
参数描述
max_digits 总位数(不包括⼩数点和符号)
decimal_places ⼩数位数
举例来说, 要保存最⼤值为 999 (⼩数点后保存2位),你要这样定义字段:
models.DecimalField(..., max_digits=5, decimal_places=2)
要保存最⼤值⼀百万(⼩数点后保存10位)的话,你要这样定义:
models.DecimalField(..., max_digits=17, decimal_places=10) #max_digits⼤于等于17就能存储百万以上的数了
admin ⽤⼀个⽂本框(<input type="text">)表⽰该字段保存的数据.
<4> AutoField
⼀个 IntegerField, 添加记录时它会⾃动增长. 你通常不需要直接使⽤这个字段;
⾃定义⼀个主键:my_id=models.AutoField(primary_key=True)
如果你不指定主键的话,系统会⾃动添加⼀个主键字段到你的 model.
<5> BooleanField
A true/false field. admin ⽤ checkbox 来表⽰此类字段.
<6> TextField
⼀个容量很⼤的⽂本字段.
admin ⽤⼀个 <textarea> (⽂本区域)表⽰该字段数据.(⼀个多⾏编辑框).
<7> EmailField
⼀个带有检查Email合法性的 CharField,不接受 maxlength 参数.
<8> DateField
⼀个⽇期字段. 共有下列额外的可选参数:
Argument 描述
auto_now 当对象被保存时(更新或者添加都⾏),⾃动将该字段的值设置为当前时间.通常⽤于表⽰ "last-modified" 时间戳.
auto_now_add 当对象⾸次被创建时,⾃动将该字段的值设置为当前时间.通常⽤于表⽰对象创建时间.
auto_now_add 当对象⾸次被创建时,⾃动将该字段的值设置为当前时间.通常⽤于表⽰对象创建时间.
(仅仅在admin中有意义...)
<9> DateTimeField
⼀个⽇期时间字段. 类似 DateField ⽀持同样的附加选项.
<10> ImageField
类似 FileField, 不过要校验上传对象是否是⼀个合法图⽚.#它有两个可选参数:height_field和width_field,
如果提供这两个参数,则图⽚将按提供的⾼度和宽度规格保存.
<11> FileField
⼀个⽂件上传字段.
要求⼀个必须有的参数: upload_to, ⼀个⽤于保存上载⽂件的本地⽂件系统路径. 这个路径必须包含 strftime #formatting,
该格式将被上载⽂件的 date/time
替换(so that uploaded files don't fill up the given directory).
admin ⽤⼀个<input type="file">部件表⽰该字段保存的数据(⼀个⽂件上传部件) .
注意:在⼀个 model 中使⽤ FileField 或 ImageField 需要以下步骤:
(1)在你的 settings ⽂件中, 定义⼀个完整路径给 MEDIA_ROOT 以便让 Django在此处保存上传⽂件.
(出于性能考虑,这些⽂件并不保存到数据库.) 定义MEDIA_URL 作为该⽬录的公共 URL. 要确保该⽬录对
WEB服务器⽤户帐号是可写的.
(2)在你的 model 中添加 FileField 或 ImageField, 并确保定义了 upload_to 选项,以告诉 Django
使⽤ MEDIA_ROOT 的哪个⼦⽬录保存上传⽂件.你的数据库中要保存的只是⽂件的路径(相对于 MEDIA_ROOT).
出于习惯你⼀定很想使⽤ Django 提供的 get_<#fieldname>_url 函数.举例来说,如果你的 ImageField
叫作 mug_shot, 你就可以在模板中以 {{ object.#get_mug_shot_url }} 这样的⽅式得到图像的绝对路径.
<12> URLField
⽤于保存 URL. 若 verify_exists 参数为 True (默认), 给定的 URL 会预先检查是否存在( 即URL是否被有效装⼊且没有返回404响应).
admin ⽤⼀个 <input type="text"> ⽂本框表⽰该字段保存的数据(⼀个单⾏编辑框)
<13> NullBooleanField
类似 BooleanField, 不过允许 NULL 作为其中⼀个选项. 推荐使⽤这个字段⽽不要⽤ BooleanField 加 null=True 选项
admin ⽤⼀个选择框 <select> (三个可选择的值: "Unknown", "Yes" 和 "No" ) 来表⽰这种字段数据.
<14> SlugField
"Slug" 是⼀个报纸术语. slug 是某个东西的⼩⼩标记(短签), 只包含字母,数字,下划线和连字符.#它们通常⽤于URLs 若你使⽤ Django 开发版本,你可以指定 maxlength. 若 maxlength 未指定, Django 会使⽤默认长度: 50. #在
以前的 Django 版本,没有任何办法改变50 这个长度.
这暗⽰了 db_index=True.
它接受⼀个额外的参数: prepopulate_from, which is a list of fields from which to auto-#populate
the slug, via JavaScript,in the object's admin form: models.SlugField
(prepopulate_from=("pre_name", "name"))prepopulate_from 不接受 DateTimeFields.
<13> XMLField
⼀个校验值是否为合法XML的 TextField,必须提供参数: schema_path, 它是⼀个⽤来校验⽂本的 RelaxNG schema #的⽂件系统路径.
<14> FilePathField
可选项⽬为某个特定⽬录下的⽂件名. ⽀持三个特殊的参数, 其中第⼀个是必须提供的.
参数描述
path 必需参数. ⼀个⽬录的绝对⽂件系统路径. FilePathField 据此得到可选项⽬.
Example: "/home/images".
match 可选参数. ⼀个正则表达式, 作为⼀个字符串, FilePathField 将使⽤它过滤⽂件名.
注意这个正则表达式只会应⽤到 base filename ⽽不是
路径全名. Example: "foo.*\.txt^", 将匹配⽂件 却不匹配 或 foo23.gif.
recursive可选参数.要么 True 要么 False. 默认值是 False. 是否包括 path 下⾯的全部⼦⽬录.
这三个参数可以同时使⽤.
match 仅应⽤于 base filename, ⽽不是路径全名. 那么,这个例⼦:
FilePathField(path="/home/images", match="foo.*", recursive=True)
...会匹配 /home/images/foo.gif ⽽不匹配 /home/images/foo/bar.gif
<15> IPAddressField
⼀个字符串形式的 IP 地址, (i.e. "24.124.1.30").
<16> CommaSeparatedIntegerField
正则匹配一张图片⽤于存放逗号分隔的整数值. 类似 CharField, 必须要有maxlength参数.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论