擅长:python、mysql、java
<p>我现在正在研究Django切分模式。在</p>
<p>我看了看Django路由器,但决定自己动手。在</p>
<p>关于您的问题的一些想法:</p>
<ol>
<li>一种想法是使用一个数据库,然后在保存后使用Django信号复制适当的数据。在</li>
</ol>
<p>有点像</p>
<pre><code>import settings.databases as dbs_list
def post_save_function(UserModel):
for db in dbs_list:
UserModel.save(using=db,force_insert=True)
</code></pre>
<p>保存用户对象(至少在一个DB模型上)似乎是通过内部发生的各种魔法在幕后保存会话、身份验证等数据django.contrib公司,因此,您可能不必进入并找出所有这些数据库表的名称和类型。在</p>
<p>为了支持这种工作的可能性,我发誓我最近在某个地方读到(可能是在Alex Gaynor的一篇博客文章中),如果一个对象有外键Django将尝试使用该对象所在的同一个DB(从Django通常的操作方式来看,原因很明显)。在</p>
<ol>
<li>另一个想法是:</li>
</ol>
<p>从您引用的Django multiDB页面上的示例中,我想知道下面这样的方法是否可行:</p>
<p><em>他们的示例代码:</em></p>
^{pr2}$
<p><em>可能的修改:</em></p>
<p>def allow_syncdb(self,db,model):</p>
<pre><code> if isinstance(model,User):
return True
elif isinstance(model,Session):
return True
else:
''' something appropriate
whatever your sharding schema is for other objects '''
</code></pre>
<p>再看一看,这个代码作为“db_for_write”函数可能更有用。但你明白了。在</p>
<p>毫无疑问,这是其他类型的作品。在</p>
<p>祝你好运!希望这对你有所帮助。在</p>
<p>我对你的发现和评论很感兴趣!在</p>
<p>jb</p>