如何在django中使用多个数据库

如何在django中使用多个数据库,第1张

可以啊。不过要手工写了。在配置里将数据库路径放进去。然后在module里,自己选择相应的库与相应的model做关联。

此外还可以指定表格中的字段名。另外如果上面的方法不好用,你也可以自己直接连接数据库,自己管理。

django的数据库连接是没有连接池的。 每次访问都连接一次,效率低。不过你也可以用同样的原理 ,用mysqldb之类的库,自己建立数据库连接。

常见的关系数据库postgresql、mysql、oracle、sqlite这些都支持,官方优先推荐PostgreSQL关系数据库。

除上面之外还支持以下数据源:

SAP SQL Anywhere

IBM DB2

Microsoft SQL Server

Firebird

ODBC

1 安装Django

[plain] view plain copy

cd Django-14

python setuppy install

2 安装postgresql的客户端:

[plain] view plain copy

sudo apt-get install -y postgresql-client-91 python-psycopg2

3 新建project:

[plain] view plain copy

django-adminpy startproject myproject

4 在myproject下新建app:

[plain] view plain copy

python managepy startapp myapp

4 新增环境变量:

编辑/etc/profile文件,在末尾加入以下语句:

[plain] view plain copy

<span style="color:#FF0000;"> export PYTHONPATH=$PYTHONPATH:/home/yc/src/myproject

export DJANGO_SETTINGS_MODULE=myprojectsettings</span>

5

假设数据库已经由Django的另一个应用(名称为otherapp)建好,数据库类型是postgresql,名称为mydb,位于

192168123。见好的数据库中有一个表,名称是otherapp_user,则将otherapp/modelspy拷贝到myapp

/modelspy。

注意检查modelspy下的class user类的class Meta:部分,如果没有applabel标签,则要加上:app_label='otherapp'

再修改/home/yc/src/myproject下的settingspy文件,如下:

[plain] view plain copy

DATABASES = {

'default': {

'ENGINE': 'djangodbbackendspostgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'

'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': '192168123', # 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 copy

INSTALLED_APPS = (

'djangocontribauth',

'djangocontribcontenttypes',

'djangocontribsessions',

'djangocontribsites',

'djangocontribmessages',

'djangocontribstaticfiles',

'<span style="color:#FF0000;">myapp</span>',

)

6 在myapp目录下编写测试程序

[python] view plain copy

from models import user

if __name__=="__main__":

try:

u = userobjectsget(id=user_id)

except userDoesNotExist:

print "user not exist)

return None

else:

return u

由于创建连接的代价是很高的, 我们每次访问数据库都重新创建连接的话是非常消耗性的

我们可以再程序启动的时候先创建出一些连接, 放在一个集合中, 访问数据库的时候从集合中获取, 使用结束再放回集合中

这样做只是在程序启动的时候消耗性能去创建连接, 每次访问数据库的时候都是从内存中获取连接, 可以大大提升效率

注意事项:

由于池中增删非常频繁, 使用集合LinkedList效率较高

集合中所有连接都被占用时创建新连接, 但需要注意连接总数

使用组合模式/动态代理处理释放连接的方法, 当运行close方法时, 将连接放回池中

关于数据库连接池:

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库 *** 作的性能。

数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被 使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超 过最大连接数量时,这些请求将被加入到等待队列中。

目前到django17 为止 修改model的前提是:你已经创建完model,并且已经 使用 syncdb 或 migrate 创建了相应的数据库表。 然后再 修改model,不会对数据库表产生任何修改的。 具体的东西,自己去看 Django 相应版本的文档去吧 不同版本,不太一样。

在Django项目中,如果你没有设计数据库,那么你可以在配置文件中将DATABASES设置为空,这样Django会使用默认的SQLite数据库。

你可以在settingspy文件中找到DATABASES设置。如果你没有设计数据库,可以将其设置为空,例如:

```python

DATABASES = {}

```

或者你可以直接注释掉整个DATABASES设置,例如:

```python

# DATABASES = {

# 'default': {

# 'ENGINE': 'djangodbbackendssqlite3',

# 'NAME': BASE_DIR / 'dbsqlite3',

# }

# }

```

以上就是关于如何在django中使用多个数据库全部的内容,包括:如何在django中使用多个数据库、django支持哪些数据库、如何独立使用django的数据库访问功能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9297941.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存