gpt4 book ai didi

python - Django:如何对多个数据库执行数据库自省(introspection)?

转载 作者:行者123 更新时间:2023-11-28 22:38:53 35 4
gpt4 key购买 nike

我有代码可以从 Django 数据库中获取模型和字段。但是,它仅适用于默认数据库。

此函数需要一个数据库名称,我想获取该数据库的表和字段。

def browse_datasource(request, dbname):
table_info = []
# This is what I'd /like/ to be able to do, but it doesn't work:
# tables = connections[dbname].introspection.table_names()
tables = connection.introspection.table_names()
found_models = connection.introspection.installed_models(tables)
for model in found_models:
tablemeta = model._meta
columns = [field.column for field in model._meta.fields]
table_info.append([model.__name__, columns])

如何在非默认数据库上执行内省(introspection)?例如,是否有正确的方法来获取名称为“example”的数据库的 connection.introspection?

最佳答案

我找到了解决方案。诀窍是从连接列表中获取数据库连接,然后获取游标并将其传递给 introspection.table_names,如下所示:

table_info = []
conn = connections[dbname]
cursor = conn.cursor()
tables = conn.introspection.table_names(cursor)
found_models = conn.introspection.installed_models(tables)
for model in found_models:
tablemeta = model._meta

关于python - Django:如何对多个数据库执行数据库自省(introspection)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35299615/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com