A. vs2013怎么连接sqlserver2008r2数据库flower
VS2013带有部分SQL的管理与联接组件,但不含数据库服务组件即 SQL SERVER 组件,所以,你要使用SQL SERVER数据库的话,还得另行加装。
一般来说微软的东西,老版本的应该先安装,兼容性上才会好一些,也就是说,在同一台电脑上安装的话,应该先安装SQL SERVER 2008,后安装VS2013,当然,你要是已安装了VS2013那就镜象备份一下系统后,安装SQL server 2008试试。学编程的人,学会镜像备份系统很重要。
对就于vs2013同组的sql server 是SQL server 2012,操作上和SQL server 2008差别不大,如果没有特别需求,建议用高版本。
B. 如何在多个queue多台server上部署Celery 以及任务状态监控flower
许多Django应用需要执行异步任务, 以便不耽误http request的执行. 我们也可以选择许多方法来完成异步任务, 使用Celery是一个比较好的选择, 因为Celery
有着大量的社区支持, 能够完美的扩展, 和Django结合的也很好. Celery不仅能在Django中使用, 还能在其他地方被大量的使用. 因此一旦学会使用Celery, 我
们可以很方便的在其他项目中使用它.
1. Celery版本
本篇博文主要针对Celery 3.0.x. 早期版本的Celery可能有细微的差别.
2. Celery介绍
Celery的主要用处是执行异步任务, 可以选择延期或定时执行功能. 为什么需要执行异步任务呢?
第一, 假设用户正发起一个request, 并等待request完成后返回. 在这一request后面的view功能中, 我们可能需要执行一段花费很长时间的程序任务, 这一时间
可能远远大于用户能忍受的范围. 当这一任务并不需要立刻执行时, 我们便可以使用Celery在后台执行, 而不影响用户浏览网页. 当有任务需要访问远程服务器完
成时, 我们往往都无法确定需要花费的时间.
第二则是定期执行某些任务. 比如每小时需要检查一下天气预报, 然后将数据储存到数据库中. 我们可以编写这一任务, 然后让Celery每小时执行一次. 这样我们
的web应用便能获取最新的天气预报信息.
我们这里所讲的任务task, 就是一个Python功能(function). 定期执行一个任务可以被认为是延时执行该功能. 我们可以使用Celery延迟5分钟调用function
task1, 并传入参数(1, 2, 3). 或者我们也可以每天午夜运行该function.
我们偏向于将Celery放入项目中, 便于task访问统一数据库和Django设置.
当task准备运行时, Celery会将其放入列队queue中. queue中储存着可以运行的task的list. 我们可以使用多个queue, 但为了简单, 这里我们只使用一个.
将任务task放入queue就像加入todo list一样. 为了使task运行, 我们还需要在其他线程中运行的苦工worker. worker实时观察着代运行的task, 并逐一运行这
些task. 你可以使用多个worker, 通常他们位于不同服务器上. 同样为了简单起见, 我们这只是用一个worker.
我们稍后会讨论queue, worker和另外一个十分重要的进程, 接下来我们来动动手:
3. 安装Celery
我们可以使用pip在vietualenv中安装:
pip install django-celery
4. Django设置
我们暂时使用django runserver来启动celery. 而Celery代理人(broker), 我们使用Django database broker implementation. 现在我们只需要知道Celery
需要broker, 使用django自身便可以充当broker. (但在部署时, 我们最好使用更稳定和高效的broker, 例如Redis.)
在settings.py中:
import djcelery
djcelery.setup_loader()
BROKER_URL = 'django://'
...
INSTALLED_APPS = (
...
'djcelery',
'kombu.transport.django',
...
)
第一二项是必须的, 第三项则告诉Celery使用Django项目作为broker.
在INSTALLED_APPS中添加的djcelery是必须的. kombu.transport.django则是基于Django的broker
最后创建Celery所需的数据表, 如果使用South作为数据迁移工具, 则运行:
python manage.py migrate
否则运行: (Django 1.6或Django 1.7都可以)
python manage.py syncdb
5. 创建一个task
正如前面所说的, 一个task就是一个Pyhton function. 但Celery需要知道这一function是task, 因此我们可以使用celery自带的装饰器decorator: @task. 在
django app目录中创建taske.py:
from celery import task
@task()
def add(x, y):
return x + y
当settings.py中的djcelery.setup_loader()运行时, Celery便会查看所有INSTALLED_APPS中app目录中的tasks.py文件, 找到标记为task的function, 并
将它们注册为celery task.
将function标注为task并不会妨碍他们的正常执行. 你还是可以像平时那样调用它: z = add(1, 2).
6. 执行task
让我们以一个简单的例子作为开始. 例如我们希望在用户发出request后异步执行该task, 马上返回response, 从而不阻塞该request, 使用户有一个流畅的访问
过程. 那么, 我们可以使用.delay, 例如在在views.py的一个view中:
from myapp.tasks import add
...
add.delay(2, 2)
...
Celery会将task加入到queue中, 并马上返回. 而在一旁待命的worker看到该task后, 便会按照设定执行它, 并将他从queue中移除. 而worker则会执行以下代
码:
import myapp.tasks.add
myapp.tasks.add(2, 2)
7. 关于import
这里需要注意的是, 在impprt task时, 需要保持一致. 因为在执行djcelery.setup_loader()时, task是以INSTALLED_APPS中的app名,
加.tasks.function_name注册的, 如果我们由于python path不同而使用不同的引用方式时(例如在tasks.py中使用from myproject.myapp.tasks import
add形式), Celery将无法得知这是同一task, 因此可能会引起奇怪的bug.
8. 测试
a. 启动worker
正如之前说到的, 我们需要worker来执行task. 以下是在开发环境中的如何启动worker:
首先启动terminal, 如同开发django项目一样, 激活virtualenv, 切换到django项目目录. 然后启动django自带web服务器: python manage.py runserver.
然后启动worker:
python manage.py celery worker --loglevel=info
此时, worker将会在该terminal中运行, 并显示输出结果.
b. 启动task
打开新的terminal, 激活virtualenv, 并切换到django项目目录:
$ python manage.py shell
>>> from myapp.tasks import add
>>> add.delay(2, 2)
此时, 你可以在worker窗口中看到worker执行该task:
[2014-10-07 08:47:08,076: INFO/MainProcess] Got task from broker: myapp.tasks.add[e080e047-b2a2-43a7-af74-d7d9d98b02fc]
[2014-10-07 08:47:08,299: INFO/MainProcess] Task myapp.tasks.add[e080e047-b2a2-43a7-af74-d7d9d98b02fc] succeeded in 0.183349132538s: 4
9. 另一个例子
下面我们来看一个更为真实的例子, 在views.py和tasks.py中:
# views.py
from myapp.tasks import do_something_with_form_data
def view(request):
form = SomeForm(request.POST)
if form.is_valid():
data = form.cleaned_data
# Schele a task to process the data later
do_something_with_form_data.delay(data)
return render_to_response(...)
# tasks.py
@task
def do_something_with_form_data(data):
call_slow_web_service(data['user'], data['text'], ...)
10. 调试
由于Celery的运行需要启动多个部件, 我们可能会漏掉一两个. 所以我们建议:
使用最简单的设置
使用python debug和logging功能显示当前的进程
11. Eager模式
如果在settings.py设置:
CELERY_ALWAYS_EAGER = True
那么Celery便以eager模式运行, 则task便不需要加delay运行:
# 若启用eager模式, 则以下两行代码相同
add.delay(2, 2)
add(2, 2)
12. 查看queue
因为我们使用了django作为broker, queue储存在django的数据库中. 这就意味着我们可以通过django admin查看该queue:
# admin.py
from django.contrib import admin
from kombu.transport.django import models as kombu_models
admin.site.register(kombu_models.Message)
13. 检查结果
每次运行异步task后, Celery都会返回AsyncResult对象作为结果. 你可以将其保存, 然后在将来查看该task是否运行成功和返回结果:
# views.py
result = add.delay(2, 2)
...
if result.ready():
print "Task has run"
if result.successful():
print "Result was: %s" % result.result
else:
if isinstance(result.result, Exception):
print "Task failed e to raising an exception"
raise result.result
else:
print "Task failed without raising exception"
else:
print "Task has not yet run"
14. 定期任务
还有一种Celery的常用模式便是执行定期任务. 执行定期任务时, Celery会通过celerybeat进程来完成. Celerybeat会保持运行, 一旦到了某一定期任务需要执
行时, Celerybeat便将其加入到queue中. 不像worker进程, Celerybeat只有需要一个即可.
启动Celerybeat:
python manage.py celery beat
使Celery运行定期任务的方式有很多种, 我们先看第一种, 将定期任务储存在django数据库中. 即使是在django和celery都运行的状态, 这一方式也可以让我们
方便的修改定期任务. 我们只需要设置settings.py中的一项便能开启这一方式:
# settings.py
CELERYBEAT_SCHEDULER = 'djcelery.schelers.DatabaseScheler'
C. 找不到类型或命名空间名称“flowerMain”(是否缺少 using 指令或程序集引用)
嗯 就是因为命名空间不一致的问题吧!
在flowerMain类里面加上name flower {}
就好了!
D. Provider=SQLOLEDB.1
strerror = Err.Description
Set CN = Nothing
Set rs = Nothing
Set GetRecordset = Nothing
End Function
Public Function ExcuteCmd(strSQL As String) As Boolean '执行无返回的SQL语句
On Error GoTo ErrorHandler
Dim CN As ADODB.Connection
Dim CMD As New ADODB.Command
Set CN = Connect()
If (CN Is Nothing) Then
GoTo ErrorHandler
End If
CMD.ActiveConnection = CN
CMD.CommandText = strSQL
CMD.CommandType = adCmdText
CMD.Execute
ExcuteCmd = True
Set CN = Nothing
Set CMD = Nothing
Exit Function
ErrorHandler:
ExcuteCmd = False
strerror = Err.Description
Set CN = Nothing
Set CMD = Nothing
End Function
问题补充:
非常感谢二位提供的代码.我用"有始有终"朋友的代码.基本实现了SQL数据库的连接,但我还想请教一下.
用你的QueryExt函数返回数据库后,是不是没有断开与数据库的连接?如果在多用户系统上,这样一直连接着数据库,是否会存在数据库负荷问题?
请加我的QQ:2303507
希望在以后能得到你们的帮助!
提问时间: 2006-06-15 21:36:59
回答:有始有终
学长
6月16日 11:38 '数据源信息常量
Public Const conn As String = "Provider=SQLOLEDB.1;Password=sa;User ID=sa;Initial Catalog=StudentFiles;Data Source=localhost;"
'一次执行connect操作可以访问数据库的次数
Public Const CONNECT_LOOP_MAX = 10
'== 标记数据库是否连接 ==
Private IsConnect As Boolean
'== 标记执行Connect()函数后,访问数据库的次数 ==
Private Connect_Num As Integer
Private cnn As ADODB.Connection '连接数据库的Connection对象
Private rs As ADODB.Recordset '保存结果集的Recordset对象
'连接数据库
Private Sub Connect()
'如果连接标记为真,则返回。否则会出错
If IsConnect = True Then
Exit Sub
End If
'关键New用于创建新对象cnn
Set cnn = New ADODB.Connection
'设置连接字符串ConnectionString属性
cnn.ConnectionString = conn
'打开到数据库的连接
cnn.Open
'判断连接的状态
If cnn.State <> adStateOpen Then
'如果连接不成功,则显示提示信息,退出程序
MsgBox "数据库连接失败"
End
End If
'设置连接标记,表示已经连接到数据库
IsConnect = True
End Sub
'断开与数据库的连接
Private Sub Disconnect()
Dim Rc As Long
'如果连接标记为假,标明已经断开连接,则直接返回
If IsConnect = False Then
Exit Sub
End If
'关闭连接
cnn.Close
'释放cnn
Set cnn = Nothing
'设置连接标记,表示已经断开与数据库的连接
IsConnect = False
End Sub
'使用Connect_Num控制数据库连接
Public Sub DB_Connect()
Connect_Num = Connect_Num + 1
Connect
End Sub
Public Sub DB_Disconnect()
If Connect_Num >= CONNECT_LOOP_MAX Then
Connect_Num = 0
Disconnect
End If
End Sub
'强制关闭api方式访问的数据库,计数器复位
Public Sub DBapi_Disconnect()
Connect_Num = 0
Disconnect
End Sub
'执行数据库操作语句
Public Sub SQLExt(ByVal TmpSQLstmt As String)
'创建Command对象cmd
Dim cmd As New ADODB.Command
'连接到数据库
DB_Connect
'设置cmd的ActiveConnection属性,指定与其关联的数据库连接
Set cmd.ActiveConnection = cnn
'设置要执行的命令文本
cmd.CommandText = TmpSQLstmt
' MsgBox TmpSQLstmt
'执行命令
cmd.Execute
'清空cmd对象
Set cmd = Nothing
'断开与数据库的连接
DB_Disconnect
End Sub
'执行数据库查询语句
Public Function QueryExt(ByVal TmpSQLstmt As String) As ADODB.Recordset
'创建Recordset对象rst
Dim rst As New ADODB.Recordset
'连接到数据库
DB_Connect
'设置rst的ActiveConnection属性,指定与其关联的数据库连接
Set rst.ActiveConnection = cnn
'设置游标类型
rst.CursorType = adOpenDynamic
'设置锁定类型
rst.LockType = adLockOptimistic
'打开记录集
rst.Open TmpSQLstmt
'返回记录集
Set QueryExt = rst
End Function
E. 马婧的主要论着:
1 Jing Ma, Zheng Li, Bin Wang, Shunzhao Sui,Mingyang Li. Cloning and Expression of an Expansin Gene in Chimonanthus praecox Flower and Its Response to Ethephon. Hortscience, 2012
2 马婧,孙文婷,王晶,眭顺照,李名扬. 蜡梅胚胎晚期丰富蛋白基因CpLEA 的克隆及表达分析.园艺学报,2014,41(8):1663-1672
3马婧,刘群,王晓斌,眭顺照,李名扬. 2个蜡梅非特异性脂转移蛋白启动子的克隆及其在烟草中的瞬时表达分析. 植物遗传资源学报,2012,4(13):601-6084马婧,王斌,代银,眭顺照,李名扬.金荞麦FdLAR基因的克隆和表达分析. 药学学报.,2012,7(47)953-961:5 马婧,祝钦泷,郭铁英,刘光德,眭顺照,李名扬. 金荞麦MYB转录因子基因FdMYBP1的克隆及分子特征分析. 中国中药杂志,2009,34(17):2155-2159
6 Daofeng Liu, Shunzhao Sui, Jing Ma, Zhineng Li, Yulong Guo, Dengpan Luo, Jianfeng Yang, Mingyang Li*. Transcriptomic analysis of flower development in wintersweet (Chimonanthus praecox). PLOS one 9(1): e86976. doi:10.1371/journal.pone.0086976
7 Daofeng Liu, Jing Ma, Jianfeng Yang, Tien V Nguyen, Huamin Liu, Renwei Huang, Shunzhao Sui*, Mingyang Li*. Mining SSR and SNP markers in transcriptomic database of wintersweet (Chimonanthus praecox). Hortscience. 2014.49(11):1360-1364
8 Jianghui Luo, Daofeng Liu, Jing Ma, Weiting Men, Lu Fan, Yu Bai, Mingyang Li*, Shunzhao Sui*. Effects of hormonal treatments on postharvest characteristics in cut wintersweet flowers (Chimonanthus praecox). (submitted)9 Shunzhao Sui, Jianghui Luo, Jing Ma, Qinlong Zhu, Xinghua Lei, and Mingyang Li. Generation and Analysis of Expressed Sequence Tags from Chimonanthus praecox (Wintersweet) Flowers for Discovering Stress-responsive and Floral Development Related Genes[J]. Comparative and Functional Genomics, 2012. dio:10.1155/2012/134596
10 Yulong Guo, Yao Han, Jing Ma, Huiping Wang, Xianchun Sang, Mingyang Li. Undesired Small RNAs Originate from an Artificial microRNA Precursor in Transgenic Petunia (Petunia hybrida). PLoS ONE , 第9卷,第6期,e98783, doi:10.1371/journal.pone.0098783, 2014
11 罗江会,马婧,刘道凤,杨建峰,门维婷,万超,眭顺照,李名扬. 乙烯对蜡梅切花开放衰老及乙烯受体基因表达的影响. 植物生理学报,2015,51 (2): 253-258
12 李政,马婧,眭顺照,李名扬.不同脱落力下蜡梅花梗CpEXP1基因的表达与扩张蛋白活性.植物生理学报,2013,49(11):1255-126012 张倩,马婧,何婧,李名扬,眭顺照. 中国芦荟AlDREB2基因的克隆及其胁迫表达. 园艺学报,2009,36(11):1659-166613 刘群,马婧,祝钦泷,余国武,张倩,眭顺照, 李名扬. 蜡梅非特异性脂转移蛋白基因nsLTP家族3个成员的分子特征及非生物胁迫应答分析. 农业生物技术学报,2009,17(6): 1027-103414 眭顺照,马婧,李艳冬,祝钦泷, 李名扬. 提取金荞麦愈伤组织总RNA的一种有效方法. 中国中药杂志,2011,36(6):751-75415 胡雨晴,孙文婷,马婧,曹鑫,李名扬,眭顺照. 蜡梅热激蛋白基因CpHSP1的克隆与表达分析[J]. 林业科学,2011, 47(5): 163-16716 眭顺照,李琳莉,祝钦泷,马婧,李名扬. 蜡梅凝集素基因克隆及其对蚜虫、蛞蝓抗性分析[J].中国农业科学, 2011, 44 (2): 358-368科研获奖:
蜡梅花器官发育及其抗寒性形成的分子基础研究;重庆市自然科学奖三等奖,第三完成人,2013年6月
其他获奖:
西南大学第十届教师课堂教学比赛,三等奖
F. basic,base,basis的区别
一、词性不同
basic是形容词,basis是名词,base可以作为动词,也可以作为名词。
二、含义不同
basic的基本含义包括:
1、基础的,基本的,根本的。
2、最简单的,最初级的。
例句:basic salary/pay:基本工薪/底薪。
basis的基本含义是基础,根据,基本原理。
例句:on the basis of :在...的基础上/根据...
base作为名词的基本意思是把基地设在.../以...为基地
base作为名词的基本意思是:
1、底部,根基,基础(指某种东西的根部,如大楼的地基等)。
2、基础。
3、基地/总部(公司的)。
4、(军事的)基地。
toward the end of的基本含义是朝某事的终点前进。
towards (介词)the end of的基本含义是到...结束的时候。
三、使用范围不同
basic用于形容某个初级的或者基础的事情或者层次。
base用于表示某种基础或者基本的道理和原理。
base主要用于代指某种建筑的根基或者某个基地。
G. foundation、base和basis的区别
foundation、base和basis的区别:含义不同、用法不同、侧重点不同。
一、含义不同
foundation
n. 根基;创建;基金(会)。
base
n. 底部;基地;基数;基线;(棒球)垒;[化]碱。
vt. 以 ... 作基础。
adj. 卑鄙的;不道德的。
basis
n.基础;根据;基底。
二、用法不同
foundation
作名词含有“基础”之意。foundation用于具体意义时,侧重指坚固结实的建筑物的基础或地基;用作比喻意义时,与basis基本相同。
How long will it take to finish digging the foundations?
挖地基大概需要多长时间完成呢?
He laid the foundation of his success by study and hard work.
他通过学习和努力工作为成功打下了基础。
base
base的基本意思是“底座,基础”,一般指具体有形的事物的底部、基座等;也可用来比喻理论的基础或讨论的根据等。base还可作“基地”解,多指军事或工业基地。
base是可数名词,其前可加a或the,在句中可作主语或宾语。
base用作动词是“把…建立在,以…为基础”的意思,指人们依据一定的客观规律或自己的亲身体验而得出的一定结论。base常用于非物质结构的基础,这个基础可以是物质的,也可以是非物质的。
base是及物动词,常与on连用,作“使建立在…基础上”解。常用于被动结构。
base常指有形的基础,侧重指构成或支撑某一具体物体的基础,也可指军事基地或用作比喻意义。而basis常指无形的基础,主要用作抽象或引申意义;
military base是指军事基地,economic basis and superstructure是指经济基础和上层建筑;
base和basis的复数形式都是bases,前者读作['beisiz],后者读作['beisi:z]。
I found a small leaf at the base of the flower.
我在那朵花的底部发现一片小叶。
Our mission was over, and went back to our base.
我们的任务结束了,我们返回了基地。
basis
basis的基本意思是指人们采取某一行动的“原因;缘由”,也可指人们组织、安排和操作某事的“基准;准则;方式”,作此二解时basis是单数名词。basis还可指事物的“主要成分,最重要的部分”,由此事物得以形成、开始和发展,作此解时basis是可数名词,常用于单数形式,有时也用作不可数名词。
在类似on a whole-time basis,on an international basis等表达方式中,冠词a或an不能省略;
on a/an ... basis的表达方式显得较为繁琐,如They work whole-time较They work on a whole-time basis更为简洁。
His research formed the basis of his new book.
他的研究成果是他这本新书的基础。
We drew this conclusion on the basis of experiments.
我们是在试验的基础上得出这个结论的。
三、侧重点不同
foundation
作名词含有“基础”之意。foundation用于具体意义时,侧重指坚固结实的建筑物的基础或地基;用作比喻意义时,与basis基本相同。
base
作名词含有“基础”之意。base侧重指构成或支撑某一具体物体的基础,也可指军事基地或用作比喻意义。
basis
作名词含有“基础”之意。basis主要用作抽象或引申意义。
H. bloom和flower之间的区别
n.
花
花开的状态; 开花期
[只用单] 青春; 兴旺时期
果实的粉衣; 粉霜; 微茸层; 菌绒
(面部)红润
光圈, 晕, 图象发晕[浮散]; 模型表面沾污
大钢坯, 钢锭, 铁[钢]块; 大方坯
黄色鞣化酸
(石油产品、松香油等的)荧光
华(常见的象荧光一样的矿物)
(纺织物等染后出现的)光泽
蛋壳的表皮
酒特有的香味
水花区
油霜
新铸硬帮上的粒面或粉面; 清漆膜上的云状物
保护得很好的家畜毛皮; 巧克力的灰白色
火花区
The gardens are all in bloom.
春色满园。
They are in the bloom of youth.
他们处在青春时代。
These fruits have a bloom upon them.
这些水果有粉衣。
【词性变化】
bloom
soft金山king
vt.
使繁荣; 使开花
使艳丽
在(光洁、清亮物体)上产生一片云雾状的区域
起晕; 浮散; (给透镜)涂层
初轧; 把...轧成钢坯
Their breath bloomed the frosty pane.
他们呼出的水气, 在冰冷的窗玻璃上形成一层雾。
bloom
soft金山king
vi.
开花
进入青春时代
繁盛
发亮; 突然激增
Subscription selling bloomed splendidly.
订阅销售量激增。
【继承用法】
bloom-base
n.
支柱座
bloom-blank
n.
(轧制轨梁等钢材用的)大异形坯
【习惯用语】
be out of bloom
花已落
come into bloom
开花
cut off in its bloom
于旺盛时加以摧残
in full bloom
花盛开着
take the bloom off sth.
使某物失去光采显得陈旧
the bloom of the plum
[废]娇媚, 鲜艳
the blue of the plum
[废]娇媚, 鲜艳
bloom into
发育为, 成长为
bloom of youth
青春; 风华正茂
bloom out
风化
【特殊用法】
algal bloom
藻花
arsenic bloom
砷华; 三氧化二砷
chocolate bloom
巧克力表面发白霜
cobalt bloom
【矿】钴华,
crater bloom
凹陷霜花; 永久霜花(漆病)
crumb bloom
面包瓤的光泽
crystalline bloom
起霜; (结)晶霜(漆病)
cylindrical bloom
大圆钢坯
fat bloom
(巧克力的)表面出油发白霜; [俗]反霜
lubricant bloom (=grease mark)
油迹
nickel bloom
【矿】镍华
oil bloom
油霜(油的荧光)
perpetual bloom
连续开花, 四季开花
phytoplankton blooms
浮游植物增殖
plankton bloom
浮游生物(大量繁殖引起的)水花
puddled bloom
搅炼炉坯铁
rose bloom
蔷薇花
rust bloom
锈霜
salt bloom
盐花(假霉)
scarfed bloom
经火焰清理的初轧方坯
seamless bloom
无缝钢管坯
shaped bloom
异形初轧坯, 异形方坯
steel bloom
钢坯
sulfur bloom
硫黄华; 硫霜
unreheated bloom
不再热的初轧方坯
water bloom
【植】水花
white bloom
白花; 白翳(含硫化合物在煤油灯上沉积)
zinc bloom
锌华; 氧化锌
近义词:blossom flourish flower glow thrive
反义词:fade shrivel wither