当前位置:   article > 正文

Django cursor()增删改查和shell环境执行脚本_cursor.execute 删除

cursor.execute 删除

        在Django中,cursor()方法是DatabaseWrapper对象(由django.db.connectio提供)的一个方法,用于创建一个游标对象。这个游标对象可以用来执行SQL命令,从而实现对数据库的增删改查操作。

查询(Select)

        使用cursor.execute()方法执行SQL查询语句,可以获取数据库中的数据。查询your_table表中的所有记录。执行查询后,你可以使用cursor.fetchall()或cursor.fetchone()等方法来获取查询结果。

cursor.execute("SELECT * FROM your_table")

插入(Insert)

        使用cursor.execute()方法执行SQL插入语句,可以向数据库中添加新的记录。插入一条新记录。这里%s是占位符,execute()方法的第二个参数是一个列表,包含了要插入的值。

cursor.execute("INSERT INTO your_table (column1, column2) VALUES (%s, %s)", [value1, value2])

更新(Update)

        使用cursor.execute()方法执行SQL更新语句,可以修改数据库中已存在的记录。例如,你可以使用来更新your_table表中id为某值的记录的column1字段。

cursor.execute("UPDATE your_table SET column1 = %s WHERE id = %s", [new_value, id])

删除(Delete)

使用cursor.execute()方法执行SQL删除语句,可以删除数据库中的记录。删除your_table表中id为某值的记录。

cursor.execute("DELETE FROM your_table WHERE id = %s", [id])

示例

1,添加模型

Test/app11/models.py

  1. from django.db import models
  2. class Post(models.Model):
  3. title = models.CharField(max_length=200)
  4. content = models.TextField()
  5. pub_date = models.DateTimeField('date published')
  6. class Book(models.Model):
  7. title = models.CharField(max_length=100)
  8. author = models.CharField(max_length=100)
  9. publication_date = models.DateField()
  10. price = models.DecimalField(max_digits=5, decimal_places=2)
  11. def __str__(self):
  12. return self.title

2,shell 环境执行脚本

python manage.py shell

2.1 查询数据

fetchone() 方法 查询单行数据

  1. # fetchall() 方法 查询单行数据
  2. from django.db import connection
  3. # 使用cursor执行SQL查询
  4. with connection.cursor() as cursor:
  5. cursor.execute("SELECT * FROM app11_post WHERE id = (%s)",['2'])
  6. row = cursor.fetchone()
  7. if row:
  8. print(f"Post with id 2: {row}")
  9. else:
  10. print("No post found with id 2")

 fetchall() 方法 查询所有数据

  1. # fetchall() 方法 查询所有数据
  2. from django.db import connection
  3. from datetime import datetime
  4. # 使用cursor执行SQL查询获取所有Post
  5. with connection.cursor() as cursor:
  6. cursor.execute("SELECT id, title, content, pub_date FROM app11_post")
  7. rows = cursor.fetchall()
  8. for row in rows:
  9. print(row)
  10. print('\n')
  11. # 使用cursor执行SQL查询获取所有Book
  12. with connection.cursor() as cursor:
  13. cursor.execute("SELECT id, title, author, publication_date, price FROM app11_book")
  14. rows = cursor.fetchall()
  15. for row in rows:
  16. print(row)

2.2 插入数据

  1. from django.db import connection
  2. from datetime import datetime
  3. import pytz
  4. # 使用cursor执行SQL查询插入数据
  5. with connection.cursor() as cursor:
  6. # 如果你的Django项目启用了时区支持,确保你的datetime对象是带有时区信息的
  7. pub_date = datetime(2023, 1, 1, 12, 0, 0, tzinfo=pytz.UTC)
  8. # 对于Post模型
  9. cursor.execute(
  10. "INSERT INTO app11_post (title, content, pub_date) VALUES (%s, %s, %s)",
  11. ['My First Post1321', 'This is the content of my first post.', pub_date]
  12. )
  13. # 对于Book模型
  14. cursor.execute(
  15. "INSERT INTO app11_book (title, author, publication_date, price) VALUES (%s, %s, %s, %s)",
  16. ['My First Book1321', 'John Doe', '2023-01-01', 19.99]
  17. )

也可以用save()方法

  1. # 插入数据
  2. from datetime import datetime
  3. import pytz
  4. from app11.models import Post
  5. # 创建一个Post对象
  6. post = Post(title='My First Post123', content='This is the content of my first post.123',
  7. pub_date=datetime(2023, 1, 1, 12, 0, 0, tzinfo=pytz.UTC))
  8. # 保存到数据库
  9. post.save()
  10. # 插入数据
  11. from datetime import datetime
  12. import pytz
  13. from app11.models import Book
  14. # 创建一个Book对象
  15. book = Book(title='My First Book123', author='John Doe123', publication_date=datetime(2023, 1, 1, 12, 0, 0, tzinfo=pytz.UTC), price=19.99)
  16. # 保存到数据库
  17. book.save()

2.3 更新数据

  1. # 更新数据
  2. from django.db import connection
  3. # 新的title和content
  4. new_title = 'Updated Title123'
  5. new_content = 'Updated Content123'
  6. # 使用cursor执行SQL查询更新数据
  7. with connection.cursor() as cursor:
  8. cursor.execute(
  9. "UPDATE app11_post SET title=%s, content=%s WHERE id=5",
  10. [new_title, new_content]
  11. )
  12. from django.db import connection
  13. # 新的title和price值
  14. new_title = 'Updated Book Title123'
  15. new_price = 29.99
  16. # 使用cursor执行SQL查询更新数据
  17. with connection.cursor() as cursor:
  18. cursor.execute(
  19. "UPDATE app11_book SET title=%s, price=%s WHERE id=5",
  20. [new_title, new_price]
  21. )

2.4 删除数据

  1. from django.db import connection
  2. # 要删除的记录的id
  3. post_id = 5
  4. # 使用cursor执行SQL查询删除数据
  5. with connection.cursor() as cursor:
  6. cursor.execute(
  7. "DELETE FROM app11_post WHERE id = %s",
  8. [post_id]
  9. )
  10. from django.db import connection
  11. # 要删除的记录的id
  12. book_id = 5
  13. # 使用cursor执行SQL查询删除数据
  14. with connection.cursor() as cursor:
  15. cursor.execute(
  16. "DELETE FROM app11_book WHERE id = %s",
  17. [book_id]
  18. )

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/885282
推荐阅读
相关标签
  

闽ICP备14008679号