Django:数据库表的建立与增删查改(ForeignKey和ManytoMany)
生活随笔
收集整理的這篇文章主要介紹了
Django:数据库表的建立与增删查改(ForeignKey和ManytoMany)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據庫表的創建:
class Publisher(models.Model):
??? name = models.CharField(max_length=30)
??? address = models.CharField(max_length=50)
??? city = models.CharField(max_length=60)
??? state_province = models.CharField(max_length=30)
??? country = models.CharField(max_length=50)
??? website = models.URLField()
class Author(models.Model):
??? first_name = models.CharField(max_length=30)
??? last_name = models.CharField(max_length=40)
??? email = models.EmailField()
class Book(models.Model):
??? title = models.CharField(max_length=100)
??? authors = models.ManyToManyField(Author)
??? publisher = models.ForeignKey(Publisher)#定義外鍵的時候,在創建該表時,數據庫自動的會增加_id在其名字后面,即publisher_id
??? publication_date = models.DateField() 3、告訴整個項目,激活該model.py文件,在項目setting.py中進行激活: INSTALLED_APPS = (
??? 'app.books',
) 4、在shell中驗證model代碼的正確性,驗證無誤后,執行代碼,將其轉換為sql語言: python manage.py validate python manage.py sqlall books validate 命令檢查你的模型的語法和邏輯是否正確。 如果一切正常,你會看到 0 errors found 消息。 5、同步到數據庫中,syncdb僅僅創建數據庫里還沒有的表,它 并不 對你數據模型的修改進行同步,也不處理數據模型的刪除 python manage.py syncdb python manage.py migrate 數據庫的增刪查改: 1、插入記錄 p1 = Publisher(name='Apress', address='2855 Telegraph Avenue',
...???? city='Berkeley', state_province='CA', country='U.S.A.',
...???? website='http://www.apress.com/')
>>> p1.save() >>> Publisher.objects.filter(id=52).update(name='Apress Publishing') save()每次都更新所有列,update()則每次更新指定列 2、關鍵字查詢 Publisher.objects.filter(name='Apress') 上面的例子中``
filter()`` 函數返回一個記錄集,這個記錄集是一個列表。 相對列表來說,有些時候我們更需要獲取單個的對象, `` get()``
方法就是在此時使用的: Publisher.objects.get(name="Apress") 3、數據集合排序 >>>Publisher.objects.order_by("name") >>> Publisher.objects.order_by("-name") #倒序 4、刪除記錄 Publisher.objects.filter(country='USA').delete() 執行數據庫的SQL命令 1.導入django.db的connection模塊,建立與數據庫的鏈接,在之前一定要在settings.py上設置好數據庫,并且執行 python manage.py syncdb同步數據庫 >>> from django.db import connection
>>> cursor=connection.cursor() 如果不在django框架下,連接數據庫的操作為:
execute(self, query, args):執行單條sql語句,接收的參數為sql語句本身和使用的參數列表,返回值為受影響的行數
executemany(self, query, args):執行單條sql語句,但是重復執行參數列表里的參數,返回值為受影響的行數
nextset(self):移動到下一個結果集 cursor用來接收返回值的方法:
fetchall(self):接收全部的返回結果行.
fetchmany(self,
size=None):接收size條返回結果行.如果size的值大于返回的結果行的數量,則會返回cursor.arraysize條數據.
fetchone(self):返回一條結果行.
scroll(self,
value,
mode='relative'):移動指針到某一行.如果mode='relative',則表示從當前所在行移動value條,如果mode='absolute',則表示從結果集的第一
行移動value條.
1、Django工程項目建立,基礎環境調試。
2、創建表 from django.db import modelsclass Publisher(models.Model):
??? name = models.CharField(max_length=30)
??? address = models.CharField(max_length=50)
??? city = models.CharField(max_length=60)
??? state_province = models.CharField(max_length=30)
??? country = models.CharField(max_length=50)
??? website = models.URLField()
class Author(models.Model):
??? first_name = models.CharField(max_length=30)
??? last_name = models.CharField(max_length=40)
??? email = models.EmailField()
class Book(models.Model):
??? title = models.CharField(max_length=100)
??? authors = models.ManyToManyField(Author)
??? publisher = models.ForeignKey(Publisher)#定義外鍵的時候,在創建該表時,數據庫自動的會增加_id在其名字后面,即publisher_id
??? publication_date = models.DateField() 3、告訴整個項目,激活該model.py文件,在項目setting.py中進行激活: INSTALLED_APPS = (
??? 'app.books',
) 4、在shell中驗證model代碼的正確性,驗證無誤后,執行代碼,將其轉換為sql語言: python manage.py validate python manage.py sqlall books validate 命令檢查你的模型的語法和邏輯是否正確。 如果一切正常,你會看到 0 errors found 消息。 5、同步到數據庫中,syncdb僅僅創建數據庫里還沒有的表,它 并不 對你數據模型的修改進行同步,也不處理數據模型的刪除 python manage.py syncdb python manage.py migrate 數據庫的增刪查改: 1、插入記錄 p1 = Publisher(name='Apress', address='2855 Telegraph Avenue',
...???? city='Berkeley', state_province='CA', country='U.S.A.',
...???? website='http://www.apress.com/')
>>> p1.save() >>> Publisher.objects.filter(id=52).update(name='Apress Publishing') save()每次都更新所有列,update()則每次更新指定列 2、關鍵字查詢 Publisher.objects.filter(name='Apress') 上面的例子中``
filter()`` 函數返回一個記錄集,這個記錄集是一個列表。 相對列表來說,有些時候我們更需要獲取單個的對象, `` get()``
方法就是在此時使用的: Publisher.objects.get(name="Apress") 3、數據集合排序 >>>Publisher.objects.order_by("name") >>> Publisher.objects.order_by("-name") #倒序 4、刪除記錄 Publisher.objects.filter(country='USA').delete() 執行數據庫的SQL命令 1.導入django.db的connection模塊,建立與數據庫的鏈接,在之前一定要在settings.py上設置好數據庫,并且執行 python manage.py syncdb同步數據庫 >>> from django.db import connection
>>> cursor=connection.cursor() 如果不在django框架下,連接數據庫的操作為:
import MySQLdb conn=MySQLdb.connect(host="localhost",user="root",passwd="123",db="mydatabase")
cursor=conn.cursor()
2.設置SQL命令:
>>> cursor.execute("""
... SELECT DISTINCT first_name
... FROM books_author
... WHERE last_name = %s""",['miao'])
3.執行命令:
>>> row = cursor.fetchone()
cursor對象用擁有的方法如下:
cursor用來執行命令的方法: callproc(self, procname, args):用來執行存儲過程,接收的參數為存儲過程名和參數列表,返回值為受影響的行數execute(self, query, args):執行單條sql語句,接收的參數為sql語句本身和使用的參數列表,返回值為受影響的行數
executemany(self, query, args):執行單條sql語句,但是重復執行參數列表里的參數,返回值為受影響的行數
nextset(self):移動到下一個結果集 cursor用來接收返回值的方法:
fetchall(self):接收全部的返回結果行.
fetchmany(self,
size=None):接收size條返回結果行.如果size的值大于返回的結果行的數量,則會返回cursor.arraysize條數據.
fetchone(self):返回一條結果行.
scroll(self,
value,
mode='relative'):移動指針到某一行.如果mode='relative',則表示從當前所在行移動value條,如果mode='absolute',則表示從結果集的第一
行移動value條.
轉載于:https://www.cnblogs.com/weiming-cheng/p/5315430.html
總結
以上是生活随笔為你收集整理的Django:数据库表的建立与增删查改(ForeignKey和ManytoMany)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css3毛玻璃模糊效果
- 下一篇: 正则表达式的学习二:正则表达式的匹配规则