电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Django與數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn)

瀏覽:5日期:2024-09-05 08:55:10
目錄1 如何創(chuàng)建項(xiàng)目數(shù)據(jù)庫(kù)2 進(jìn)行數(shù)據(jù)庫(kù)與django的交互3 添加數(shù)據(jù)4 查找數(shù)據(jù)4 更新數(shù)據(jù)1 如何創(chuàng)建項(xiàng)目數(shù)據(jù)庫(kù)

首先,在虛擬機(jī)數(shù)據(jù)庫(kù)中建立一個(gè)與項(xiàng)目同名的數(shù)據(jù)庫(kù),方便管理。

(django_test) bd@DF:~$ mysql -u admin -p

輸入密碼,進(jìn)入數(shù)據(jù)庫(kù)后。

mysql> SHOW DATABASES;

查看當(dāng)前所有已有的數(shù)據(jù)庫(kù),然后創(chuàng)建數(shù)據(jù)庫(kù)。

mysql> CREATE DATABASE ’django_test’;

就會(huì)有一個(gè)名為‘django_test’的數(shù)據(jù)庫(kù)。

+--------------------+| Database |+--------------------+| information_schema || django_test|| mysql || performance_schema || sys|+--------------------+5 rows in set (0.10 sec)2 進(jìn)行數(shù)據(jù)庫(kù)與django的交互

有了數(shù)據(jù)庫(kù)之后,我們需要把這個(gè)庫(kù)配置到項(xiàng)目中,進(jìn)行關(guān)系綁定。首先在settings.py文件中的DATABASES一項(xiàng):

DATABASES = { ’default’: {# ’ENGINE’: ’django.db.backends.sqlite3’,# ’NAME’: os.path.join(BASE_DIR, ’db.sqlite3’),’ENGINE’: ’django.db.backends.mysql’, # 數(shù)據(jù)庫(kù)引擎’NAME’: ’django_test’, # 哪一個(gè)數(shù)據(jù)庫(kù)’USER’: ’admin’, # 用戶’PASSWORD’: ’yourpassword’, # 數(shù)據(jù)庫(kù)密碼’HOST’: ’127.0.0.1’, # 數(shù)據(jù)庫(kù)服務(wù)器IP’PORT’: ’3306’ # 數(shù)據(jù)庫(kù)端口(需要去ubuntu中設(shè)置端口轉(zhuǎn)發(fā),虛擬機(jī)的端口是3306,我們直接轉(zhuǎn)發(fā)到本地3306) }}

將默認(rèn)的配置注釋掉,然后帶上自己的數(shù)據(jù)庫(kù)信息.端口轉(zhuǎn)發(fā)(ubuntu):

Django與數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn)

由于需要操作mysql數(shù)據(jù)庫(kù),所以需要在虛擬環(huán)境中安裝pymysql,注意:需要一定要在對(duì)應(yīng)的虛擬環(huán)境中安裝。

pip install mysql -i https://pypi.douban.com/simple

使用豆瓣源會(huì)快一些。然后pip list 查看自己是否已經(jīng)有pymysql。有了之后,進(jìn)入項(xiàng)目總目錄下的__init__.py文件。

import pymysqlpymysql.install_as_MySQLdb()

添加兩行代碼,完成映射的導(dǎo)入。然后去我們需要進(jìn)行數(shù)據(jù)庫(kù)交互的app中的models.py.

from django.db import models# Create your models here.class User(models.Model): # id = models.AutoField(primary_key=True) # 主鍵字段不需要我們自己寫(xiě) name = models.CharField(max_length=30) age = models.IntegerField(null=True) sex = models.IntegerField(null=True) city = models.CharField(max_length=30, null=True) note = models.TextField(null=True) create_time = models.DateTimeField(auto_now_add=True) update_time = models.DateTimeField(auto_now=True)

這里我們定義了很多項(xiàng),然后對(duì)應(yīng)的數(shù)據(jù)類型是需要注意的(根據(jù)你定義的項(xiàng)的數(shù)據(jù)類型來(lái)),括號(hào)里面的限定信息也需要注意。數(shù)據(jù)類型:

類型 說(shuō)明 AutoField 自動(dòng)增長(zhǎng)的IntegerField,通常不用指定,不指定時(shí)Django會(huì)自動(dòng)創(chuàng)建屬性名為id的自動(dòng)增長(zhǎng)屬性 BooleanField 布爾字段,值為True或False NullBooleanField 支持Null、True、False三種值 CharField 字符串,參數(shù)max_length表示最大字符個(gè)數(shù) TextField 大文本字段,一般超過(guò)4000個(gè)字符時(shí)使用 IntegerField 整數(shù) DecimalField 十進(jìn)制浮點(diǎn)數(shù), 參數(shù)max_digits表示總位數(shù), 參數(shù)decimal_places表示小數(shù)位數(shù) FloatField 浮點(diǎn)數(shù) DateField 日期, 參數(shù)auto_now表示每次保存對(duì)象時(shí),自動(dòng)設(shè)置該字段為當(dāng)前時(shí)間,用于'最后一次修改'的時(shí)間戳,它總是使用當(dāng)前日期,默認(rèn)為False; 參數(shù)auto_now_add表示當(dāng)對(duì)象第一次被創(chuàng)建時(shí)自動(dòng)設(shè)置當(dāng)前時(shí)間,用于創(chuàng)建的時(shí)間戳,它總是使用當(dāng)前日期,默認(rèn)為False; 參數(shù)auto_now_add和auto_now是相互排斥的,組合將會(huì)發(fā)生錯(cuò)誤 TimeField 時(shí)間,參數(shù)同DateField DateTimeField 日期時(shí)間,參數(shù)同DateField FileField 上傳文件字段 ImageField 繼承于FileField,對(duì)上傳的內(nèi)容進(jìn)行校驗(yàn),確保是有效的圖片

限定條件:

選項(xiàng) 說(shuō)明 null 如果為True,表示允許為空,默認(rèn)值是False blank 如果為True,則該字段允許為空白,默認(rèn)值是False db_column 字段的名稱,如果未指定,則使用屬性的名稱 db_index 若值為True, 則在表中會(huì)為此字段創(chuàng)建索引,默認(rèn)值是False default 默認(rèn)值 primary_key 若為True,則該字段會(huì)成為模型的主鍵字段,默認(rèn)值是False,一般作為AutoField的選項(xiàng)使用 unique 如果為True, 這個(gè)字段在表中必須有唯一值,默認(rèn)值是False max_length 字段長(zhǎng)度限制 DateField.auto_now 修改數(shù)據(jù)時(shí),更新時(shí)間,使用save方法才會(huì)有用 DateField.auto_now_add 第一次添加會(huì)將當(dāng)前時(shí)間設(shè)置進(jìn)去,修改不會(huì)

在完成數(shù)據(jù)的導(dǎo)入之后,我們就要在虛擬機(jī)中進(jìn)行遷移。移動(dòng)到項(xiàng)目目錄下。

python manage.py makemigrations

命令后面可以跟app名稱,指定對(duì)某個(gè)app的模型進(jìn)行映射,如果沒(méi)有寫(xiě),就所有的app都回去創(chuàng)建映射文件。再次之前,你必須保證你的app都在settings里面注冊(cè)了。在遷移完之后,我們需要將遷移的數(shù)據(jù)提交給數(shù)據(jù)庫(kù)(在虛擬機(jī)中且在目錄下):

python manage.py migrate

我們可以這樣理解,遷移是將我們?cè)趗ser類中定義的數(shù)據(jù)項(xiàng)轉(zhuǎn)化為create table這樣的mysql語(yǔ)句,然后就是將語(yǔ)句提交到數(shù)據(jù)庫(kù)中創(chuàng)建表。創(chuàng)建完成后,我們?cè)跀?shù)據(jù)庫(kù)中查看是否完成操作:

mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || django_test|| mysql || performance_schema || sys|+--------------------+5 rows in set (0.00 sec)mysql> use django_test;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables;+-----------------------+| Tables_in_django_test |+-----------------------+| django_migrations || six_user |+-----------------------+2 rows in set (0.00 sec)mysql> describe six_user;+-------------+-------------+------+-----+---------+----------------+| Field | Type| Null | Key | Default | Extra |+-------------+-------------+------+-----+---------+----------------+| id | int(11) | NO | PRI | NULL | auto_increment || name| varchar(30) | NO | | NULL ||| age | int(11) | YES | | NULL ||| sex | int(11) | YES | | NULL ||| note| longtext | YES | | NULL ||| create_time | datetime(6) | NO | | NULL ||| update_time | datetime(6) | NO | | NULL ||| city| varchar(30) | YES | | NULL ||+-------------+-------------+------+-----+---------+----------------+8 rows in set (0.00 sec)

這里我們首先show databases;查看庫(kù),再進(jìn)入我們的項(xiàng)目數(shù)據(jù)庫(kù),選擇six_user查看表格。完成實(shí)現(xiàn)數(shù)據(jù)表創(chuàng)建操作。

如果我們需要修改表,那么我們只需要修改模型類就可以了,如果我們需要在模型類中添加一個(gè)字段,那么我們不能直接增加,因?yàn)樵黾右粋€(gè)不可為空的字段會(huì)存在一個(gè)邏輯錯(cuò)誤。即添加一個(gè)本身為空(添加進(jìn)去的時(shí)候是空的)的不可為空字段是不被允許的,所以我們需要在括號(hào)中添加null=True。如上面模型類的city字段,添加完成后,進(jìn)行遷移和提交即可,就是上面兩個(gè)步驟,刪除也是一樣的,也就是說(shuō),只要是更新模型類,都需要上面2個(gè)步驟。

3 添加數(shù)據(jù)

如果我們需要添加數(shù)據(jù),我們?cè)囈幌?/p>

from django.http import HttpResponse, HttpResponseNotFoundfrom django.shortcuts import redirect, renderfrom .models import User# Create your views here.def add_user(request): # 方法一 # user = User(name=’zjj’, age=18) # user.save() # 使用save方法保存提交數(shù)據(jù) # return HttpResponse(’添加成功’) # 方法二 # user = User() # user.name = ’zj’ # user.age = 18 # user.save() # return HttpResponse(’添加成功’) # 方法三 # User.objects.create(name=’z’, age=8) # return HttpResponse(’添加成功’) # 方法四 get_or_create會(huì)判斷有沒(méi)有傳入的數(shù)據(jù)(指完全一致的數(shù)據(jù)),如果有則不創(chuàng)建,只獲取,如果沒(méi)有則創(chuàng)建,并獲取,返回一個(gè)元組。 user, flag = User.objects.get_or_create(name=’z1’, age=10) message = ’添加成功’ if not flag:message = ’已有數(shù)據(jù)’ print(user.name, user.create_time) return HttpResponse(message)

這里我們首先需要引入models類中我們定義的User類,然后通過(guò)對(duì)User類實(shí)例化進(jìn)行添加,以上舉例了四種方法,前兩種方法都需要使用save方法,后面兩種是調(diào)用對(duì)象的方法直接添加數(shù)據(jù),較為方便,這里需要講一下最后一個(gè)方法,這個(gè)方法會(huì)判斷傳入數(shù)據(jù),如果沒(méi)有傳入數(shù)據(jù),就會(huì)首先創(chuàng)建,然后獲取該數(shù)據(jù),返回一個(gè)True,這里我在上面print了幾條數(shù)據(jù),可以去測(cè)試一下。如果是重復(fù)數(shù)據(jù),就會(huì)不創(chuàng)建,返回?cái)?shù)據(jù),加一個(gè)False。那么我們?cè)谶@里進(jìn)行一個(gè)拆包,獲取兩個(gè)參數(shù),然后做一個(gè)判斷,這樣就可以進(jìn)行頁(yè)面的信息傳遞。

mysql> SELECT * FROM `six_user`;+----+------+------+------+------+----------------------------+----------------------------+------+| id | name | age | sex | note | create_time| update_time| city |+----+------+------+------+------+----------------------------+----------------------------+------+| 1 | zjj | 18 | NULL | NULL | 2021-03-10 21:40:18.246543 | 2021-03-10 21:40:18.246564 | NULL || 2 | zj | 18 | NULL | NULL | 2021-03-10 21:44:36.590347 | 2021-03-10 21:44:36.590365 | NULL || 3 | z | 8 | NULL | NULL | 2021-03-10 21:46:37.315176 | 2021-03-10 21:46:37.315195 | NULL || 4 | z1 | 10 | NULL | NULL | 2021-03-10 21:56:20.559386 | 2021-03-10 21:56:20.559421 | NULL |+----+------+------+------+------+----------------------------+----------------------------+------+4 rows in set (0.00 sec)

然后還有一種方法就是在前端頁(yè)面添加數(shù)據(jù),然后后端接收后添加入數(shù)據(jù)庫(kù)。第一步,在路由中添加接收信息:

from django.contrib import adminfrom django.urls import pathfrom . import viewsurlpatterns = [ path(r’add_user/<name>/<age>’, views.add_user)]

視圖函數(shù)中:

def add_user(request, name, age): user, flag = User.objects.get_or_create(name=name, age=age) message = ’添加成功’ if not flag:message = ’已有數(shù)據(jù)’ print(user.name, user.create_time) return HttpResponse(message)

這樣我們就可以在前端接收數(shù)據(jù)后,直接添加入數(shù)據(jù)庫(kù)

Django與數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn)

mysql> SELECT * FROM `six_user`;+----+------+------+------+------+----------------------------+----------------------------+------+| id | name | age | sex | note | create_time| update_time| city |+----+------+------+------+------+----------------------------+----------------------------+------+| 1 | zjj | 18 | NULL | NULL | 2021-03-10 21:40:18.246543 | 2021-03-10 21:40:18.246564 | NULL || 2 | zj | 18 | NULL | NULL | 2021-03-10 21:44:36.590347 | 2021-03-10 21:44:36.590365 | NULL || 3 | z | 8 | NULL | NULL | 2021-03-10 21:46:37.315176 | 2021-03-10 21:46:37.315195 | NULL || 4 | z1 | 10 | NULL | NULL | 2021-03-10 21:56:20.559386 | 2021-03-10 21:56:20.559421 | NULL || 5 | zjjj | 21 | NULL | NULL | 2021-03-10 22:06:47.200072 | 2021-03-10 22:06:47.200101 | NULL |+----+------+------+------+------+----------------------------+----------------------------+------+5 rows in set (0.00 sec)4 查找數(shù)據(jù)

4.1查找所有數(shù)據(jù)

查找數(shù)據(jù)方法,我們先定一個(gè)函數(shù)來(lái)試試看:

def find_user(request):# 查詢所有數(shù)據(jù) user_list = User.objects.all() print(user_list) return HttpResponse(’查詢成功’)

記得添加路由,然后我們?cè)谀P皖愊率褂媚Хǚ椒ㄐ薷膒rint方法

def __str__(self):return ’id=%s, name=%s, age=%s, city=%s, note=%s’ % (self.id, self.name, self.age, self.city, self.note)

那么我們?cè)趐rint數(shù)據(jù)時(shí)可以看的清楚一些。

Django與數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn)

上面是查詢所有數(shù)據(jù)。那么如何查詢一個(gè)數(shù)據(jù)呢?

4.2查詢一個(gè)數(shù)據(jù)

def find_user(request):# 查詢一個(gè)數(shù)據(jù) user = User.objects.get(id=1) print(user, type(user)) return HttpResponse(’查詢成功’)

Django與數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn)

這里需要注意的是,get方法是用來(lái)查詢唯一數(shù)據(jù),如果你輸入的條件不是唯一的,會(huì)直接報(bào)錯(cuò)。那么查詢多個(gè)數(shù)據(jù)?

4.3查詢多條數(shù)據(jù)

def find_user(request): # 查詢多條數(shù)據(jù) user_list = User.objects.filter(name=18) print(user_list, type(user_list)) return HttpResponse(’查詢成功’)

這里我們使用filter方法

Django與數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn)

這里返回的是一個(gè)集合對(duì)象(可迭代對(duì)象,即可被for循環(huán))。

def find_user(request): # 查詢多條數(shù)據(jù) user_list = User.objects.filter(age=18) for user in user_list:print(user) # print(user_list, type(user_list)) return HttpResponse(’查詢成功’)

這樣就能返回多條信息。

Django與數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn)

不僅如此,該對(duì)象還可以切片。

def find_user(request): # 查詢多條數(shù)據(jù) user_list = User.objects.filter(age=18) # for user in user_list: # print(user) # print(user_list, type(user_list)) print(user_list[0:1]) return HttpResponse(’查詢成功’)

還可以轉(zhuǎn)型

def find_user(request): # 查詢多條數(shù)據(jù) user_list = User.objects.filter(age=18) # for user in user_list: # print(user) # print(user_list, type(user_list)) # print(user_list[0:1]) print(list(user_list)) return HttpResponse(’查詢成功’)4 更新數(shù)據(jù)

更新數(shù)據(jù)的步驟就是先獲得到你要修改的數(shù)據(jù),然后對(duì)其進(jìn)行重新賦值

4.1獲取數(shù)據(jù)

from django.shortcuts import renderfrom django.http import HttpResponsefrom six.models import Userfrom django.db.models import Count, Avg, Min, Max, Sum, F, Q# Create your views here.# 常用的查詢方法def find(request): # 獲取所有數(shù)據(jù) rs = User.objects.all() # 獲取第一條數(shù)據(jù) rs = User.objects.first() # 獲取最后一條方法 rs = User.objects.last() # 獲取指定條件的多條數(shù)據(jù) rs = User.objects.filter(age=18) # 獲取唯一的一條數(shù)據(jù),一般的get返回對(duì)象具有唯一性(一般用id來(lái)查),如果有多個(gè)就會(huì)報(bào)錯(cuò),可以用try來(lái)處理 rs = User.objects.get(id=3)

這里的方法很多,可根據(jù)需要來(lái)

4.2對(duì)數(shù)據(jù)排序

# 對(duì)結(jié)果排序 rs = User.objects.order_by(’age’) # 正序,從小到大 rs = User.objects.order_by(’-age’) # 倒序,從大到小 # 多項(xiàng)排序 rs = User.objects.order_by(’age’, ’-id’)# 獲取當(dāng)前查詢到的數(shù)據(jù)的總數(shù),只需要在查找后面加上count方法即可 rs = User.objects.filter(age=28).count() # 將返回的QuerySet中的Model轉(zhuǎn)換成字典,轉(zhuǎn)換成字典之后,我們可以進(jìn)行迭代用鍵取值 rs = User.objects.all().values() for i in rs:print(i[’name’]) print(rs)

4.3查詢條件

# 常用查詢條件 # 相當(dāng)于WHERE語(yǔ)句后面的提交,傳給查詢方法的一些參數(shù) # 語(yǔ)法規(guī)則 :字段名__條件, 注意是兩個(gè)下劃線 # 等于 rs = User.objects.filter(age=18) # 包含 模糊查詢 rs = User.objects.filter(name__contains=’j’) # 大于 rs = User.objects.filter(age__gt=18) # 大于等于 rs = User.objects.filter(age__gte=18) # 小于 rs = User.objects.filter(age__lt=18) # 小于等于 rs = User.objects.filter(age__lte=18) # 判斷是否為空 rs = User.objects.filter(city__isnull=True) # 以什么開(kāi)始 rs = User.objects.filter(name__startwith=’z’) # 以什么結(jié)尾 rs = User.objects.filter(name__endwith=’1’) # 多個(gè)條件 成員所屬,是否在我們給的列表?xiàng)l件中 rs = User.objects.filter(name__in=[’zj’, ’zjj’, ’zjjjj’]) # 范圍 包含開(kāi)頭和結(jié)尾 rs = User.objects.filter(age__range=(18, 28))

4.4聚合查詢

Count, Avg, Min, Max, Sum主要有這些方法

from django.db.models import Count, Avg, Min, Max, Sum, F, Q # 可以使用聚合查詢進(jìn)行聚合查詢, Count,Avg, Max, Min, Sum.這是需要導(dǎo)入的 # aggregate()是QuerySet的一個(gè)終止語(yǔ)句,返回的是一個(gè)包含鍵值對(duì)的字典 # 統(tǒng)計(jì)條數(shù) rs = User.objects.all().aggregate(Count(’age’)) # 求年齡平均值 rs = User.objects.all().aggregate(Avg(’age’)) # 求年齡最大值 rs = User.objects.all().aggregate(Max(’age’)) # 求年齡最小值 rs = User.objects.all().aggregate(Min(’age’)) # 年齡求和 rs = User.objects.all().aggregate(Sum(’age’)) # 可以修改key的值 以上的返回值都是一個(gè)鍵值對(duì),我們可以更改key的值 rs = User.objects.all().aggregate(ageSum=Sum(’age’))

4.5分組查詢

# 分組查詢 # 調(diào)用的QuerySet中每個(gè)對(duì)象都生成一個(gè)獨(dú)立的統(tǒng)計(jì)值 # 拿出需要分組的字段 values方法是獲得括號(hào)里,在數(shù)據(jù)庫(kù)中所有該屬性的值,并返回鍵值對(duì)類型的字典 rs = User.objects.values(’age’) # 對(duì)age這個(gè)字段進(jìn)行分組 ,這里使用的計(jì)數(shù)函數(shù),即返回的字典里顯示該age的個(gè)數(shù)的鍵值對(duì) rs = rs.annotate(count=Count(’age’)) # 或者使用這個(gè)方法 rs = User.objects.values(’age’).annotate(count=Count(’age’))

F和Q查詢

from django.db.models import F, Q# F查詢 也需要導(dǎo)入 # 給User表中的所有人加一歲(+1), 減一歲就-1 rs = User.objects.all().update(age=F(’age’) + 1) # Q查詢 # 如果需要執(zhí)行更加復(fù)雜的查詢,可以使用Q對(duì)象 # & (and) | (or) ~ (not) # 查詢名字尾zj或者年齡為18的用戶 rs = User.objects.filter(Q(name=’zj’) | Q(age=18)) # 查詢名字為zjjj,并且年齡不等于28 rs = User.objects.filter(Q(name=’zjjj’) & ~Q(age=28)) print(rs) return HttpResponse(’查找成功’)

Q查詢一般用于邏輯查詢

到此這篇關(guān)于Django與數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Django 數(shù)據(jù)庫(kù)交互內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Django
相關(guān)文章:
主站蜘蛛池模板: POS机办理_个人POS机免费领取 - 银联POS机申请首页 | 活性炭-蜂窝-椰壳-柱状-粉状活性炭-河南唐达净水材料有限公司 | 天津试验仪器-电液伺服万能材料试验机,恒温恒湿标准养护箱,水泥恒应力压力试验机-天津鑫高伟业科技有限公司 | Win10系统下载_32位/64位系统/专业版/纯净版下载 | 原子吸收设备-国产分光光度计-光谱分光光度计-上海光谱仪器有限公司 | SF6环境监测系统-接地环流在线监测装置-瑟恩实业 | 苏州防水公司_厂房屋面外墙防水_地下室卫生间防水堵漏-苏州伊诺尔防水工程有限公司 | 球磨机,节能球磨机价格,水泥球磨机厂家,粉煤灰球磨机-吉宏机械制造有限公司 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | 二手注塑机回收_旧注塑机回收_二手注塑机买卖 - 大鑫二手注塑机 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 嘉兴恒升声级计-湖南衡仪声级计-杭州爱华多功能声级计-上海邦沃仪器设备有限公司 | 网站优化公司_北京网站优化_抖音短视频代运营_抖音关键词seo优化排名-通则达网络 | 氢氧化钾厂家直销批发-济南金昊化工有限公司 | 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 合同书格式和范文_合同书样本模板_电子版合同,找范文吧 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 金刚网,金刚网窗纱,不锈钢网,金刚网厂家- 河北萨邦丝网制品有限公司 | 报警器_家用防盗报警器_烟雾报警器_燃气报警器_防盗报警系统厂家-深圳市刻锐智能科技有限公司 | 西子馋火锅鸡加盟-太原市龙城酉鼎餐饮管理有限公司 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | 海水晶,海水素,海水晶价格-潍坊滨海经济开发区强隆海水晶厂 | 全自动变压器变比组别测试仪-手持式直流电阻测试仪-上海来扬电气 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 | 安徽集装箱厂-合肥国彩钢结构板房工程有限公司 | 桨叶搅拌机_螺旋挤压/方盒旋切造粒机厂家-无锡市鸿诚输送机械有限公司 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 天津仓储物流-天津电商云仓-天津云仓一件代发-博程云仓官网 | 万濠影像仪(万濠投影仪)百科-苏州林泽仪器| 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 欧必特空气能-商用空气能热水工程,空气能热水器,超低温空气源热泵生产厂家-湖南欧必特空气能公司 | 企业彩铃制作_移动、联通、电信集团彩铃上传开通_彩铃定制_商务彩铃管理平台-集团彩铃网 | 断桥铝破碎机_发动机破碎机_杂铝破碎机厂家价格-皓星机械 | 空压机商城|空气压缩机|空压机配件-压缩机网旗下商城 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 离子色谱自动进样器-青岛艾力析实验科技有限公司 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 对辊破碎机_四辊破碎机_双齿辊破碎机_华盛铭重工 | 气动隔膜泵-电动隔膜泵-循环热水泵-液下排污/螺杆/管道/化工泵「厂家」浙江绿邦 | 【电子厂招聘_普工招工网_工厂招聘信息平台】-工立方打工网 |