栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python > python框架

Django中如何运用sql语句查询数据库

python框架 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django中如何运用sql语句查询数据库

每次查询数据库都需要很多时间,为了提高效率,小编找到在Django中用sql语句的方法分享给大家。

下面是一个简单的例子。


from django.db import connection def my_custom_sql(self):    with connection.cursor() as cursor:        cursor.execute("UPDATe bar SET foo = 1 WHERe baz = %s", [self.baz])        cursor.execute("SELECT foo FROM bar WHERe baz = %s", [self.baz])        row = cursor.fetchone()    return row

如果你项目中有多个数据库的话,django.db.connection也能很方便的选取数据库。django.db.connections 是一个类字典的结构,允许你使用数据库别名获取connection。


from django.db import connections with connections['my_db_alias'].cursor() as cursor:    # Your code here...


使用with作为上下文管理器:


with connection.cursor() as c:    c.execute(...)

和下面这段代码等效


c = connection.cursor() try:    c.execute(...) finally:    c.close()

注意的问题:

      如果你做了更新或者插入操作需要在代码中使用 :transaction.commit_unless_managed() 来提交数据。或者使用事务装饰器(例如 commit_on_success)来修饰视图和提供事务控制数据提交。这样就不用在代码中调用transaction.commit_unless_managed()。但是,如果你不手动提交修改,你需要使用 transaction.set_dirty() 将事务标识为已脏。使用 Django ORM 对数据库进行修改时,Django 会自动调用 set_dirty() 。但如果你使用了原始 SQL ,Django 就无法获得你的 SQL 是否修改了数据。只有手动调用 set_dirty() 才能确保 Django 知晓哪些修改必须被提交。


from django.db.transaction import commit_on_success @commit_on_success def my_custom_sql_view(request, value):    from django.db import connection, transaction    cursor = connection.cursor()    # Data modifying operation    cursor.execute("UPDATe bar SET foo = 1 WHERe baz = %s", [value])    # Since we modified data, mark the transaction as dirty    transaction.set_dirty()    # Data retrieval operation. This doesn't dirty the transaction,    # so no call to set_dirty() is required.    cursor.execute("SELECT foo FROM bar WHERe baz = %s", [value])    row = cursor.fetchone()    #transaction.commit_unless_managed()    return render_to_response('template.html', {'row': row})


以上就是Django中运用sql语句查询数据库的方法。更多Python学习推荐:PyThon学习网教学中心。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/12680.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号