我正在编写一个类来将用户插入到数据库中,在我走得太远之前,我只想确保我的OO方法是干净的:
class User(object):
def setName(self,name):
#Do sanity checks on name
self._name = name
def setPassword(self,password):
#Check password length > 6 characters
#Encrypt to md5
self._password = password
def commit(self):
#Commit to database
>>u = User()
>>u.setName('Jason Martinez')
>>u.setPassword('linebreak')
>>u.commit()
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?我应该声明类变量吗?我应该在所有类变量前面使用_来使它们变为私有吗?
谢谢你的帮助.
[我希望这不是太模糊......如果没有人知道,我会问新闻组]
我正在使用Pylons(一个python框架)来提供一个简单的Web应用程序,但它似乎不时死亡,这在错误日志中: (2006, 'MySQL server has gone away')
我做了一些检查,发现这是因为与MySQL的连接没有被更新.这应该不是问题,因为sqlalchemy.pool_recycle配置文件中的应该自动保持活动状态.默认是3600,但1800由于这个问题,我拨回了它.它有所帮助,但根据文档3600 应该没问题.错误仍然是半定期发生的.我不想降低太多,但DOS我自己的数据库:).
也许我的MySQL配置中的某些东西是傻瓜?不确定在哪里看.
其他相关细节:
Python 2.5
Pylons: 0.9.6.2 (w/ sql_alchemy)
MySQL: 5.0.51
Run Code Online (Sandbox Code Playgroud) 我是一名正在寻找适用于Python的企业级Web应用程序框架的开发人员.我主要关心的是长期支持,广泛的功能集和可靠性.
我一直在试验Pylons,经过我在Windows上使用Ruby on Rails的可怕经验,我甚至不得不编译自己的Postgres驱动程序,Pylons和Python一直是天赐之物.
我相信Python由于非常强大的社区和商业利益,由于可用库的数量和他们为Python 3.0保持一些相似的向后兼容性所做的努力,因此绝对是"企业就绪".我担心的是:
对于Pylons 0.97,我们都能说同样的话吗?
另外,我一直在研究如何让SQLAlchemy在Pylons上使用DB2,以便我可以自动执行基本的CRUD操作.http://code.google.com上的当前DB2驱动程序仅支持SQLAlchemy 0.4.您是否认为IBM致力于使DB2与SQLAlchemy长期合作?或者你们觉得用DB2提供的ODBC驱动程序创建SQLAlchemy接口会更好.与使用IBM的SQLAlchemy驱动程序相比有什么缺点吗?
目前,我使用以下方法在Pyramid中上传文件(通过HTML表单).
if request.params.get('form.submitted'):
upload_directory = os.getcwd() + '/myapp/static/uploads/'
my_file = request.POST.get('thumbnail')
saved_file = str(upload_directory) + str(my_file.filename)
perm_file = open(saved_file, 'w')
shutil.copyfileobj(my_file.file, perm_file)
my_file.file.close()
perm_file.close()
Run Code Online (Sandbox Code Playgroud)
我只是想知道,这是保存文件上传的好方法,我的方法有任何安全问题吗?我怎么能改进我的方法.谢谢.
我使用SQLAlchemy作为python项目的ORM.我创建了几个模型/架构,它工作正常.现在我需要查询现有的MySQL数据库,不需要插入/更新select语句.
如何围绕此现有数据库的表创建包装器?我简要介绍了sqlalchemy文档和SO,但找不到任何相关内容.所有建议执行方法,我需要编写原始sql查询,而我想使用SQLAlchemy查询方法,就像我使用SA模型一样.
例如,如果现有的db具有表名User,那么我想使用dbsession查询它(只有select操作,可能是使用join)
金字塔中模板上下文的等价物是什么?
金字塔中的IBeforeRender活动是否与此有关?我已经阅读了官方文档,但很难理解IBeforeRender事件究竟是什么.
我正在研究用python编写的Web应用程序.
假设我的test_login.py模块中有5个测试.
每个测试都是一个类.
通常有一个基本测试扩展TestFlow类,这是我们预定义的测试类.
然后,该模块中的其他测试扩展了该基础测试.
例如 :
#The base test
TestLogin(TestFlow):
#do login_test_stuff_here
#Another test in the same module
TestAccountDetails(TestLogin)
#do account_details_test_stuff_here
...
Run Code Online (Sandbox Code Playgroud)
它实际上非常方便,因为为了测试例如AccountDetails用户必须登录,所以我可以继承TestLogin测试,我准备测试其他功能作为登录用户.
所有测试都在Project/project/tests文件夹中.
我们使用带有选项--with-pylons的nosetests来运行测试.
我的问题是,是否有办法将某些TestClass标记为"不要测试这个".
因为我不想浪费时间直接执行这些"基础测试",因为它们将由其他来自它们的测试执行.
可能会有这些测试的音调,我想在可能的情况下保存每一秒.
我已经找到了像Skip,SkipTest或@nottest这样的东西,但这些只适用于一个ceratin TestClass中的test_methods,所以我认为它不会在这里工作,我是否每个测试用例都有一个类.
我有一个Pylons应用程序,我正在使用SqlAlchemy声明模型.为了使代码更清晰,我将一个.query添加到SA Base并继承我的所有模型.
所以在我的app.model.meta中我有
Base = declarative_base()
metadata = Base.metadata
Session = scoped_session(sessionmaker())
Base.query = Session.query_property(Query)
Run Code Online (Sandbox Code Playgroud)
我认为将其继承到app.model.mymodel并将其声明为meta.Base的子代.这让我可以把我的查询写成
mymodel.query.filter(mymodel.id == 3).all()
Run Code Online (Sandbox Code Playgroud)
问题是pylint没有看到.query作为我模型的有效属性.
E:102:JobCounter.reset_count: Class 'JobCounter' has no 'query' member
Run Code Online (Sandbox Code Playgroud)
显然,这个错误遍布整个地方,因为它发生在任何进行任何查询的模型上.我不想只是跳过错误,因为它可能会指出非orm类的一些事情,但我必须错过pylint接受这个的东西.
任何提示?
我有一个Pylons应用程序,我想将一些逻辑移到单独的批处理过程中.我一直在主应用程序下运行它进行测试,但它将在数据库中做很多工作,我希望它是一个独立的进程,将在后台不断运行.主要的pylons应用程序将作业提交到数据库中,新进程将完成每个作业中所请求的工作.
如何将控制器作为独立脚本启动?
我目前有:
from warehouse2.controllers import importServer
importServer.runServer(60)
Run Code Online (Sandbox Code Playgroud)
并在控制器文件中,但不是控制器类的一部分:
def runServer(sleep_secs):
try:
imp = ImportserverController()
while(True):
imp.runImport()
sleepFor(sleep_secs)
except Exception, e:
log.info("Unexpected error: %s" % sys.exc_info()[0])
log.info(e)
Run Code Online (Sandbox Code Playgroud)
但是在命令行上启动ImportServer.py会导致:
2008-09-25 12:31:12.687000 Could not locate a bind configured on mapper Mapper|I
mportJob|n_imports, SQL expression or this Session
Run Code Online (Sandbox Code Playgroud) 我正在使用Sqlalchemy来定义我的表等等,这里是我提出的一些代码:
locations = Table('locations', Base.metadata,
Column("lat", Float(Precision=64), primary_key=True),
Column("lng", Float(Precision=64), primary_key=True),
)
Run Code Online (Sandbox Code Playgroud)
我在某处读到纬度和经度要求比浮点更精确,通常是双倍精度.所以我手动将精度设置为64,这是否足够?矫枉过正?这对我的情况有帮助吗?