麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
789
2023-12-14
导读:很多朋友问到关于django如何更新数据库数据的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!django1.5.4数据库,auto_now时间不能自动更新
想解决问题就手工给一下~ 想探究原理请阅读Django官方文档~
django中user扩展表中数据怎么更新在models.py 中增加如下扩展user的类:#==================扩展用户====================================
class UserProfile(models.Model):user = models.OneToOneField(User)major = models.TextField(default=, blank=True)
address = models.CharField(max_length=200,default=,blank=True)def __unicode__(self):return self.user.username
def create_user_profile(sender, instance, created, **kwargs):"""Create the UserProfile when a new User is saved"""
if created:profile = UserProfile()profile.user = instanceprofile.save()#post_save.connect(create_user_profile, sender=User)
""" 不明白的是,我一定注释掉上面这一行,才不会出错,否则会有Duplicate entry 2 for key user_id") ,看意思是,重复了,但不明白为什么重复,注释掉上面的之后,一切正常,但与官方文档又有差异了,迷惑中"""
#==================扩展用户结束================================12345678910111213141516171819还需要修改admin.py"""用户模块扩展"""
class ProfileInline(admin.StackedInline):model = UserProfile#fk_name = usermax_num = 1can_delete = False
class CustomUserAdmin(UserAdmin):inlines = [ProfileInline,]admin.site.unregister(User)admin.site.register(User, CustomUserAdmin)
"""用户模块扩展"""12345678910111213修改settings.py 的配置,增加"""用户模块扩展部分"""AUTH_PROFILE_MODULE = djangoadmin.myadmin.UserProfile
"""用户模块扩展完成"""123按照官方的解释,这里是app label加上扩展类的名字. 应该也就是创建的app的名字,官方推荐的方式就两个部分用”.”连接起来,我这里有三个部分,也没有报错 然后运行 python manage.py syncdb ,这是会在数据库中创建响应的表,并且有user_id这个外键字段. 。
最后,我们来运行一下程序,并进入到增加用户界面中,你会发现,你扩展的字段都显示出来了 每次增加用户,都会在扩展的表中增加相应的数据,修改的时候,也会修改响相应的数据,通过 user_id 来关联,这样就完成了user model的扩展。
如果要获取扩展表中的内容,可以通过 request.user.get_profile().address 这种方式来获取. 得到 User对象后,就能很方便的得到扩展的类.django怎么使用本机mysql数据库
step 1:修改你的django project目录下的settings.py 文件至如下所示:其中,NAME 对应的 ‘db_name 是你事先使用mysql 的命令行提示符创建的数据库名称注意:在django使用数据库之前,你必须先创建出数据库,否则会报错。
USER对应的username 还有 PASSWORD 对应的‘passwd 就是你在mysql中创建的用户名和密码如果你有多个的话,随便填一个就好HOST和PORT默认都可以不填题外话: 使用用户名和密码登录mysql的方法:。
首先,你需要进入 mysql/bin的目录下,也可以在.bash_profile中设置环境变量:PATH=/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/Cellar/mysql/5.6.22/bin/
再在prompt输入 mysql -u username -p, 回车后再输入 passwd即可step 2:然后,在manage.py路径中使用python manage.py syncdb 试试,结果会提示你错误找不到 MySQLdb 这个module, 为什么呢, 因为 python manage.py syncdb 命令是这样工作的:
1. 在project目录的settings.py的INSTALLED_APPS元组中找到可能需要更新的APP2. 找到每一个APP目录中的models.py (关系定义文件),并针对变化在数据库中进行更新。
说了这么多,前面那个错误 找不到 module MySQLdb 是什么意思啊 ?先给个图,再解释:因为在models.py中定义关系使用的是python,而真正在数据库中操作形成model当然一定要用sql语句,所以必须要有一些功能模块
来把python语句转化成sql语句如果你使用sqlite的话,由于sqlite和转化模块都已经由python内置了,所以直接使用不会发生错误但是 ”mysql语句的转化模块“ 就需要你手动加载了,这些模块放在 MySQL-python 中。
我是使用pip 安装的:安装了之后,再使用 python manage.py syncdb就OK啦我使用的系统是 OS X,下面是 mysql 默认的安装路径/usr/local/Cellar/mysql/5.6.22/。
如果你想知道你的数据库文件是放在哪里的,你可以查看mysql_config文件中的ldata变量,这个变量的值就是 默认的数据库文件夹存储的路径 我的系统中,mysql_config的完整路径是 :/usr/local/Cellar/mysql/5.6.22/bin/mysql_config
django1.8更改了model后要怎样重建数据库# 如果你说用的是pycharm编译器的话:使用 ctrl+alt+r 进入 manage界面然后输入 makemigrations [appname] 创建数据库引导文件
然后使用 migrate [appname] 来把model变化同步到数据库# [appname] 指你当前model所在的app,如果不指定appname ;则编译全部app# 如果不是pycharm编译器的话,请再追问
结语:以上就是首席CTO笔记为大家介绍的关于django如何更新数据库数据的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。