Python Django没有其他桌子吗?

Python Django没有其他桌子吗?,python,django,database,Python,Django,Database,是否可以编写Django应用程序,例如用于现有数据库的内部/个人使用,而无需在启动项目时安装Django自己的表的“开销”?我想通过模型使用现有的表格,但没有其他所有在普通网页上肯定有用的东西 原因可能是为了构建小型个人检查/管理工具,而不会侵入遗留数据库。Django不会自行安装任何表。它附带了一些预制的应用程序,可以安装表,但是通过将它们从已安装的应用程序设置中删除,这些应用程序很容易被禁用。Django本身不安装任何表。它附带了一些预制的应用程序,可以安装表格,但通过将它们从已安装的应用程

是否可以编写Django应用程序,例如用于现有数据库的内部/个人使用,而无需在启动项目时安装Django自己的表的“开销”?我想通过模型使用现有的表格,但没有其他所有在普通网页上肯定有用的东西


原因可能是为了构建小型个人检查/管理工具,而不会侵入遗留数据库。

Django不会自行安装任何表。它附带了一些预制的应用程序,可以安装表,但是通过将它们从
已安装的应用程序设置中删除,这些应用程序很容易被禁用。

Django本身不安装任何表。它附带了一些预制的应用程序,可以安装表格,但通过将它们从
已安装的应用程序设置中删除,这些应用程序很容易被禁用。

不要安装Django的任何内置应用程序,也不要在应用程序中使用任何
models.py
。您的数据库中将没有表

您将没有用户、站点或会话——这些都是使用数据库的Django特性

不过,您仍然应该有一个SQLite数据库。我认为Django的某些部分假设您有一个数据库连接,它可能会尝试建立这个连接


这是一个很容易尝试的实验。

不要安装Django的任何内置应用程序,也不要在应用程序中使用任何
models.py
。您的数据库中将没有表

您将没有用户、站点或会话——这些都是使用数据库的Django特性

不过,您仍然应该有一个SQLite数据库。我认为Django的某些部分假设您有一个数据库连接,它可能会尝试建立这个连接


这是一个很容易尝试的实验。

定义了数据库表的最值得注意的应用是
django.contrib.auth
,它在数据库中实现了自己的auth后端。如果你的应用是防火墙的,并且你信任所有有权访问它的人,那么你可能会一起跳过身份验证。如果不是这样,您希望使用现有的基础结构创建自己的身份验证机制,那么您很可能希望使用另一个后端。如果您的web服务器设置了
REMOTE\u USER
,您可以使用,并且应该关闭并运行。否则,您必须实现自己的身份验证来引用其他身份验证源

从这里开始,您只需要设置模型以使用现有的数据库表,而不是让它们自己创建数据库表。例如,你可以很好地控制它

class MyModel(django.db.Model):
    MyTextField = django.db.TextField(db_column="mytextfield", primary_key=True)

    class Meta:
        db_table = "my_table"
通过这种方式,您可以指定每个模型的每个字段所代表的确切表格和列。请注意,可以将主键设置为integer以外的类型。django的ORM的一个限制是每个模型必须只有一个主键。因此,如果您的表没有主键,可以添加主键,或者在没有django的ORM帮助的情况下继续工作


此外,由于您正在绑定到一个现有的数据集,可能与其他应用程序相关,因此您可能不想使用
/manage.py syncdb
,因为它可能会执行一些不希望的操作。

最值得注意的定义了数据库表的应用程序是
django.contrib.auth
,它在数据库中实现了自己的auth后端。如果你的应用是防火墙的,并且你信任所有有权访问它的人,那么你可能会一起跳过身份验证。如果不是这样,您希望使用现有的基础结构创建自己的身份验证机制,那么您很可能希望使用另一个后端。如果您的web服务器设置了
REMOTE\u USER
,您可以使用,并且应该关闭并运行。否则,您必须实现自己的身份验证来引用其他身份验证源

从这里开始,您只需要设置模型以使用现有的数据库表,而不是让它们自己创建数据库表。例如,你可以很好地控制它

class MyModel(django.db.Model):
    MyTextField = django.db.TextField(db_column="mytextfield", primary_key=True)

    class Meta:
        db_table = "my_table"
通过这种方式,您可以指定每个模型的每个字段所代表的确切表格和列。请注意,可以将主键设置为integer以外的类型。django的ORM的一个限制是每个模型必须只有一个主键。因此,如果您的表没有主键,可以添加主键,或者在没有django的ORM帮助的情况下继续工作


此外,由于您正在绑定到一个现有的数据集,可能与其他应用程序相关,因此您可能不想使用
/manage.py syncdb
,因为它可能会执行一些不需要的操作。

只需在project settings.py文件中注释已安装的应用程序元组的django应用程序字符串即可(在项目开始时,在运行syncdb之前)。

只需在project settings.py文件(在项目开始时,在运行syncdb之前)中注释已安装的应用程序元组的django应用程序字符串即可。

您还可以添加一个额外的数据库(将其设置为默认值),以保留额外的django开销:

DATABASES = {
     'default': {
            'ENGINE'    : 'django.db.backends.sqlite',
            'NAME'      : 'djangoOverhead',
            'USER'      : '',
            'PASSWORD'  : '',
            'HOST'      : 'localhost' },
     'legacyAppTables': {
            'ENGINE'    : 'django.db.backends.mysql',
            'NAME'      : 'legacyAppTables',
            'USER'      : '',
            'PASSWORD'  : '',
            'HOST'      : 'someRemoteHost' }, }

您也可以只添加一个额外的数据库(将其设置为默认值),以保留额外的django开销:

DATABASES = {
     'default': {
            'ENGINE'    : 'django.db.backends.sqlite',
            'NAME'      : 'djangoOverhead',
            'USER'      : '',
            'PASSWORD'  : '',
            'HOST'      : 'localhost' },
     'legacyAppTables': {
            'ENGINE'    : 'django.db.backends.mysql',
            'NAME'      : 'legacyAppTables',
            'USER'      : '',
            'PASSWORD'  : '',
            'HOST'      : 'someRemoteHost' }, }

我知道,当然很容易从名字中发现。我的意思是,没有它们我能走多远?好吧,你将无法使用任何需要它们的应用程序。例如,如果你不想要用户和权限表,那么你将无法验证Django用户。我知道,从名字中很容易发现。我的意思是ho没有它们我能走多远?好吧,你将无法使用任何需要它们的应用程序。例如,如果你不想要用户和权限表,那么你将无法验证Django用户。非常感谢,这正是我想要的答案!:-)非常感谢,这正是我想要的答案!:-)