麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
600
2023-12-13
导读:很多朋友问到关于django如何计算数据库的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!如何独立使用django的数据库访问功能1. 安装Django
[plain] view plain copycd Django-1.4 python setup.py install 2. 安装postgresql的客户端:[plain] view plain copy
sudo apt-get install -y postgresql-client-9.1 python-psycopg2 3. 新建project:[plain] view plain copydjango-admin.py startproject myproject
4. 在myproject下新建app: [plain] view plain copypython manage.py startapp myapp 4. 新增环境变量: 编辑/etc/profile文件,在末尾加入以下语句:
[plain] view plain copyspan style="color:#FF0000;" export PYTHONPATH=$PYTHONPATH:/home/yc/src/myproject
export DJANGO_SETTINGS_MODULE=myproject.settings/span 5. 假设数据库已经由Django的另一个应用(名称为otherapp)建好,数据库类型是postgresql,名称为mydb,位于
192.168.1.23见好的数据库中有一个表,名称是otherapp_user,则将otherapp/models.py拷贝到myapp/models.py注意检查models.py下的class user类的class Meta:部分,如果没有applabel标签,则要加上:app_label=otherapp。
再修改/home/yc/src/myproject下的settings.py文件,如下:[plain] view plain copyDATABASES = { default: { ENGINE: django.db.backends.postgresql_psycopg2, # Add postgresql_psycopg2, mysql, sqlite3 or ***.
NAME: mydb, # vps2db_test1 Or path to database file if using sqlite3.
USER: postgres, # Not used with sqlite3. PASSWORD: 123, # Not used with sqlite3.
HOST: 192.168.1.23, # Set to empty string for localhost. Not used with sqlite3.
PORT: 5432, # Set to empty string for default. Not used with sqlite3.
} } [plain] view plain copyINSTALLED_APPS = ( django.contrib.auth, django.contrib.contenttypes,
django.contrib.sessions, django.contrib.sites, django.contrib.messages, django.contrib.staticfiles,
span style="color:#FF0000;"myapp/span, ) 6. 在myapp目录下编写测试程序[python] view plain copyfrom models import user
if __name__=="__main__": try: u = user.objects.get(id=user_id) except user.DoesNotExist:
print "user not exist) return None else: return u
django 怎么从数据库读数据,成为表单默认值最简单的办法是为数据库的表建立一个model具体做法是这样子1.在settings.py里设置数据库连接方式连接错误后面都没有办法2.在models设置一个数据库表的对应数据结构,通常叫关系对象模型,所以叫model,它就是一个类。
你可以用django-admin.py ...probe,似乎是这个命令,就是一个数据库的探测命令,可以根据表,自动生成model的代码当然如果你先写了model的代码就可以用syncdb命令生成数据库的表。
3.在urls.py里设置一个URL的path,当浏览器访问这个path时就可以打开对应的view中的函数4.在view里4.1 result=modelclass.objects.all()这个命令可以取出所有的记录
4.2 然后你可以直接将结果传递给模板由模板显示这是最合理的办法 4.3 在模板里 {% for cols in result %}4.4cols.field1大约就是这样子Django教程-02连接初始化数据库。
Django教程——01安装使用 在上面一篇文章里,介绍了安装Django的方法,这里说说连接数据库吧 这篇主要介绍踩的坑和解决办法 正常连接和初始化数据库的命令是 执行这个命令的时候,出现了如下报错 经过一段排查,是我配置数据库的时候,多嵌套了一层default,修改为如下即可
然后继续执行migrate时,会报如下错误 本机环境是mac电脑,按官方教程操作的时候,发现安装mysqlclient的python包会依赖本机安装mysql或者mysql-client,但在装mysql和mysql-client的时候,发现一直报错。
后面发现解决办法是,在settings.py文件里,加下如下代码,即改用pymsql连接即可 或者在settings.py同目录的__init__.py里加如上代码也可以 然后再执行python manage.py migrate命令会发现表顺利创建。
新增表,不影响原有库的其他表如何在django中使用多个数据库1.2之后, django支持在项目中使用多个DB. 那么到底如何使用呢?1. 修改 settings.py01DATABASES = {
02 default: {03 NAME: app_data,04 ENGINE: django.db.backends.postgresql_psycopg2,05 USER: postgres_user,
06 PASSWORD: s3krit07 },08 users: {09 NAME: user_data,10 ENGINE: django.db.backends.mysql,
11 USER: mysql_user,12 PASSWORD: priv4te13 }14}15 16DATABASE_ROUTERS = [path.to.MyAppRouter]
2. 实现自己的DB routers,这里决定了每个程序使用的是哪个DB01class MyAppRouter(object):02 """A router to control all database operations on models in。
03 the myapp application"""04 05 def db_for_read(self, model, **hints):06 "Point all operations on myapp models to other"
07 if model._meta.app_label == myapp:08 return other09 return None10 11 def db_for_write(self, model, **hints):
12 "Point all operations on myapp models to other"13 if model._meta.app_label == myapp:
14 return other15 return None16 17 def allow_relation(self, obj1, obj2, **hints):
18 "Allow any relation if a model in myapp is involved"19 if obj1._meta.app_label == myapp or obj2._meta.app_label == myapp:
20 return True21 return None22 23 def allow_syncdb(self, db, model):24 "Make sure the myapp app only appears on the other db"
25 if db == other:26 return model._meta.app_label == myapp27 elif model._meta.app_label == myapp:
28 return False29 return None同步数据库的时候,默认会同步到Default数据库,当然也可以通过 --database 来指定同步哪一个, 如下:
[plain] view plain copy print?tt class="xref std std-djadminopt docutils literal" style="text-decoration: none; white-space: nowrap; color: rgb(35, 79, 50); margin-left: 0px; margin-right: 0px; border-bottom-width: 1px; border-bottom-color: rgb(35, 79, 50); border-bottom-style: dotted; "$ ./manage.py syncdb
$ ./manage.py syncdb --database=users/tt 那么程序中如何来选择呢?比如,下面的代码将选择default数据库[python] view plain copy print?
span style="font-family:monospace;color:#234f32;" # This will run on the default database. Author.objects.all()
# So will this. Author.objects.using(default).all()/span 但是下面的代码将选择other数据库[python] view plain copy print?
span style="font-family:monospace;color:#234f32;" # This will run on the other database. Author.objects.using(other).all()/span
上面是查询的情况,保存的使用也一样,也是通过using来指定,如下:[python] view plain copy print?span style="font-family:monospace;color:#234f32;" my_object.save(using=legacy_users)/span
删除的时候[python] view plain copy print?span style="font-family:monospace;color:#234f32;" u = User.objects.using(legacy_users).get(username=fred)
u.delete() # will delete from the `legacy_users` database/span结语:以上就是首席CTO笔记为大家介绍的关于django如何计算数据库的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。