赞
踩
在Django中,cursor()方法是DatabaseWrapper对象(由django.db.connectio提供)的一个方法,用于创建一个游标对象。这个游标对象可以用来执行SQL命令,从而实现对数据库的增删改查操作。
使用cursor.execute()方法执行SQL查询语句,可以获取数据库中的数据。查询your_table表中的所有记录。执行查询后,你可以使用cursor.fetchall()或cursor.fetchone()等方法来获取查询结果。
cursor.execute("SELECT * FROM your_table")
使用cursor.execute()方法执行SQL插入语句,可以向数据库中添加新的记录。插入一条新记录。这里%s是占位符,execute()方法的第二个参数是一个列表,包含了要插入的值。
cursor.execute("INSERT INTO your_table (column1, column2) VALUES (%s, %s)", [value1, value2])
使用cursor.execute()方法执行SQL更新语句,可以修改数据库中已存在的记录。例如,你可以使用来更新your_table表中id为某值的记录的column1字段。
cursor.execute("UPDATE your_table SET column1 = %s WHERE id = %s", [new_value, id])
使用cursor.execute()方法执行SQL删除语句,可以删除数据库中的记录。删除your_table表中id为某值的记录。
cursor.execute("DELETE FROM your_table WHERE id = %s", [id])
Test/app11/models.py
- from django.db import models
-
- class Post(models.Model):
- title = models.CharField(max_length=200)
- content = models.TextField()
- pub_date = models.DateTimeField('date published')
-
-
-
-
- class Book(models.Model):
- title = models.CharField(max_length=100)
- author = models.CharField(max_length=100)
- publication_date = models.DateField()
- price = models.DecimalField(max_digits=5, decimal_places=2)
-
- def __str__(self):
- return self.title
python manage.py shell
- # fetchall() 方法 查询单行数据
- from django.db import connection
-
- # 使用cursor执行SQL查询
- with connection.cursor() as cursor:
- cursor.execute("SELECT * FROM app11_post WHERE id = (%s)",['2'])
- row = cursor.fetchone()
-
- if row:
- print(f"Post with id 2: {row}")
- else:
- print("No post found with id 2")
- # fetchall() 方法 查询所有数据
- from django.db import connection
- from datetime import datetime
-
- # 使用cursor执行SQL查询获取所有Post
- with connection.cursor() as cursor:
- cursor.execute("SELECT id, title, content, pub_date FROM app11_post")
- rows = cursor.fetchall()
- for row in rows:
- print(row)
-
- print('\n')
- # 使用cursor执行SQL查询获取所有Book
- with connection.cursor() as cursor:
- cursor.execute("SELECT id, title, author, publication_date, price FROM app11_book")
- rows = cursor.fetchall()
- for row in rows:
- print(row)
- from django.db import connection
- from datetime import datetime
- import pytz
-
- # 使用cursor执行SQL查询插入数据
- with connection.cursor() as cursor:
- # 如果你的Django项目启用了时区支持,确保你的datetime对象是带有时区信息的
- pub_date = datetime(2023, 1, 1, 12, 0, 0, tzinfo=pytz.UTC)
-
- # 对于Post模型
- cursor.execute(
- "INSERT INTO app11_post (title, content, pub_date) VALUES (%s, %s, %s)",
- ['My First Post1321', 'This is the content of my first post.', pub_date]
- )
-
- # 对于Book模型
- cursor.execute(
- "INSERT INTO app11_book (title, author, publication_date, price) VALUES (%s, %s, %s, %s)",
- ['My First Book1321', 'John Doe', '2023-01-01', 19.99]
- )
-
也可以用save()方法
- # 插入数据
- from datetime import datetime
- import pytz
- from app11.models import Post
-
- # 创建一个Post对象
- post = Post(title='My First Post123', content='This is the content of my first post.123',
- pub_date=datetime(2023, 1, 1, 12, 0, 0, tzinfo=pytz.UTC))
- # 保存到数据库
- post.save()
-
-
-
- # 插入数据
- from datetime import datetime
- import pytz
- from app11.models import Book
-
- # 创建一个Book对象
- book = Book(title='My First Book123', author='John Doe123', publication_date=datetime(2023, 1, 1, 12, 0, 0, tzinfo=pytz.UTC), price=19.99)
-
- # 保存到数据库
- book.save()
- # 更新数据
- from django.db import connection
-
- # 新的title和content值
- new_title = 'Updated Title123'
- new_content = 'Updated Content123'
-
- # 使用cursor执行SQL查询更新数据
- with connection.cursor() as cursor:
- cursor.execute(
- "UPDATE app11_post SET title=%s, content=%s WHERE id=5",
- [new_title, new_content]
- )
-
-
- from django.db import connection
-
- # 新的title和price值
- new_title = 'Updated Book Title123'
- new_price = 29.99
-
- # 使用cursor执行SQL查询更新数据
- with connection.cursor() as cursor:
- cursor.execute(
- "UPDATE app11_book SET title=%s, price=%s WHERE id=5",
- [new_title, new_price]
- )
- from django.db import connection
-
- # 要删除的记录的id
- post_id = 5
-
- # 使用cursor执行SQL查询删除数据
- with connection.cursor() as cursor:
- cursor.execute(
- "DELETE FROM app11_post WHERE id = %s",
- [post_id]
- )
-
-
- from django.db import connection
-
- # 要删除的记录的id
- book_id = 5
-
- # 使用cursor执行SQL查询删除数据
- with connection.cursor() as cursor:
- cursor.execute(
- "DELETE FROM app11_book WHERE id = %s",
- [book_id]
- )
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。