编程的好东西啊。
Twisted是python的一个网络编程框架,支持很多的网络协议,在安装好了Twisted的之后,在windows下可以直接在程序->Twisted->Twisted Command Prompt,直接进入Twisted的命令行状态,这个命令行会直接帮忙设置好系统的环境变量。我们在这个命令行下,可以直接使用twistd这个命令运行.tac的文件。
但是今天我运行文件的时候总是碰到错误,例如:
exceptions.NameError: global name 'config' is not defined
Failed to load application: global name 'config' is not defined
其实是在执行的tac文件中,import了一个config.py文件
这两个文件是在同一个目录下的,可是就怎么样不能在tac文件中导入config.py文件。
最后使用这个方法解决的:
import sys
sys.path.append('.')
也就是在系统环境PATH中加入一个".",来让程序查找当前目录,这样就把config.py导入了。不过很奇特的,一般文件搜索顺序应该是先找当前目录,找不到才会去找其他目录的。如果谁知道这个问题其他的解决办法。请给我留言。本文由ArthurXF倾情奉献!
但是今天我运行文件的时候总是碰到错误,例如:
exceptions.NameError: global name 'config' is not defined
Failed to load application: global name 'config' is not defined
其实是在执行的tac文件中,import了一个config.py文件
这两个文件是在同一个目录下的,可是就怎么样不能在tac文件中导入config.py文件。
最后使用这个方法解决的:
import sys
sys.path.append('.')
也就是在系统环境PATH中加入一个".",来让程序查找当前目录,这样就把config.py导入了。不过很奇特的,一般文件搜索顺序应该是先找当前目录,找不到才会去找其他目录的。如果谁知道这个问题其他的解决办法。请给我留言。本文由ArthurXF倾情奉献!
跟着ArthurXF学习python5——取得当前文件所在目录__file__
2008/10/07 18:46 ArthurXF
在PHP中有一个魔法常量__file__,里面保存着当前PHP文件所在的路径和文件名。
在PYTHON中导入一些模块后也有__file__变量,不过问题是该模块本身并不能使用这个变量,所以要在py文件中调用文件所在的目录就是个问题了。
Python中可以使用os.getcwd()函数获得获取程序运行目录:
os.getcwd()
该函数不需要传递参数,它返回程序运行目录。需要说明的是,程序运行目录并不是指脚本所在的目录,而是当前命令行状态所在的目录。
例如:
>>> import os
>>> os.getcwd()
'C:\\Python25'
>>> os.chdir(r'C:\temp')
>>> os.getcwd()
'C:\\temp'
上面的那个函数并不是我们想要的,我们要的是取的当前脚本文件所在目录,正确的是下面这段。
os.path.split( os.path.realpath( sys.argv[0] ) )[0]
为了这个问题我找了一整天的资料呢,希望对大家有些帮助,本文由ArthurXF倾情奉献!
在PYTHON中导入一些模块后也有__file__变量,不过问题是该模块本身并不能使用这个变量,所以要在py文件中调用文件所在的目录就是个问题了。
Python中可以使用os.getcwd()函数获得获取程序运行目录:
os.getcwd()
该函数不需要传递参数,它返回程序运行目录。需要说明的是,程序运行目录并不是指脚本所在的目录,而是当前命令行状态所在的目录。
例如:
>>> import os
>>> os.getcwd()
'C:\\Python25'
>>> os.chdir(r'C:\temp')
>>> os.getcwd()
'C:\\temp'
上面的那个函数并不是我们想要的,我们要的是取的当前脚本文件所在目录,正确的是下面这段。
os.path.split( os.path.realpath( sys.argv[0] ) )[0]
为了这个问题我找了一整天的资料呢,希望对大家有些帮助,本文由ArthurXF倾情奉献!
跟着ArthurXF学习python4——加载和释放python模块
2008/10/06 15:14 ArthurXF
学习python,首要学会加载python的模块,其实这个命令很简单,就是import 模块名,这个命令很像php的require,加载了模块,我们就可以使用模块内的类函数等,一般我们操作都是在命令行状态下测试的,随着我们不断的import模块进来,加载的模块就越来越多了,会不会对我们的程序造成影响就不得而知了,所以我们必须将加载的模块释放掉。释放命令也很简单,就是del 模块名。这样我们就把加载的模块释放掉了。不用每次都把命令行状态窗口关掉,再开了。本文由ArthurXF倾情奉献!
跟着ArthurXF学习python3——为python安装adodb
2008/10/05 13:34 ArthurXF
上一课我们讲了安装MySQL for python,不过就算安装了mysql那也只是一个数据库,我们就想是不是能够为python安装一个数据库中间件呢?结果adodb又进入了我们的视线,adodb不仅支持php还支持python哦。所以我们今天就来安装adodb for python。本文由ArthurXF倾情奉献。
1.下载
下载adodb-220.zip
2.看了说明我们必须要注意,adodb只是一个中间件,要让python支持各种数据库还是要安装各种数据库的python模块哦,我们这里主要讲mysql,好在我们上一课已经安装了mysql for python了,所以这里就不用再装了。如果没有安装的,请在这一步先安装mysql for python。
3.解压安装adodb
解压之后,进入dos状态,进入adodb-220目录,执行 python setup.py install
4.验证
在python命令行状态,执行import adodb,如果不报错就说明安装正确了。
5.例子
import adodb;
conn = adodb.NewADOConnection('mysql')
conn.Connect('server','user','pwd','db')
cursor = conn.Execute('select * from table')
while not cursor.EOF:
print cursor.fields
cursor.MoveNext()
cursor.Close()
conn.Close()
更多例子可以看adodb附带的说明文档。
1.下载
下载adodb-220.zip
2.看了说明我们必须要注意,adodb只是一个中间件,要让python支持各种数据库还是要安装各种数据库的python模块哦,我们这里主要讲mysql,好在我们上一课已经安装了mysql for python了,所以这里就不用再装了。如果没有安装的,请在这一步先安装mysql for python。
3.解压安装adodb
解压之后,进入dos状态,进入adodb-220目录,执行 python setup.py install
4.验证
在python命令行状态,执行import adodb,如果不报错就说明安装正确了。
5.例子
import adodb;
conn = adodb.NewADOConnection('mysql')
conn.Connect('server','user','pwd','db')
cursor = conn.Execute('select * from table')
while not cursor.EOF:
print cursor.fields
cursor.MoveNext()
cursor.Close()
conn.Close()
更多例子可以看adodb附带的说明文档。
跟着ArthurXF学习python2——让python可以访问mysql
2008/10/05 13:13 ArthurXF
其实这个动作也很简单,只是python不像PHP那样默认支持mysql,所以我们必须为python安装一个mysql的扩展库。
1.首先下载
MySQL for python
因为我们是在windows下用的,所以我下载了一个MySQL-python-1.2.2.win32-py2.5.exe
2.直接执行安装,只要你已经安装过python,那么安装会相当顺利,一切默认即可完成安装了。
3.加载模块
如果我们执行import MySQLdb,没有报错,说明安装成功了,不过千万要注意大小写哦,很容易搞错的。
4.模块中的常用函数
connect()方法用于连接数据库,返回一个数据库连接对象。如果要连接一个位于host.remote.com服务器上名为fourm的MySQL数据库,连接串可以这样写:
db = MySQLdb.connect(host="remote.com",user="user",passwd="xxx",db="fourm" )connect()的参数列表如下:
host,连接的数据库服务器主机名,默认为本地主机(localhost)。
user,连接数据库的用户名,默认为当前用户。
passwd,连接密码,没有默认值。
db,连接的数据库名,没有默认值。
conv,将文字映射到Python类型的字典。默认为MySQLdb.converters.conversions
cursorclass,cursor()使用的种类,默认值为MySQLdb.cursors.Cursor。
compress,启用协议压缩功能。
named_pipe,在windows中,与一个命名管道相连接。
init_command,一旦连接建立,就为数据库服务器指定一条语句来运行。
read_default_file,使用指定的MySQL配置文件。
read_default_group,读取的默认组。
unix_socket,在unix中,连接使用的套接字,默认使用TCP。
port,指定数据库服务器的连接端口,默认是3306。
连接对象的db.close()方法可关闭数据库连接,并释放相关资源。
连接对象的db.cursor([cursorClass])方法返回一个指针对象,用于访问和操作数据库中的数据。
连接对象的db.begin()方法用于开始一个事务,如果数据库的AUTOCOMMIT已经开启就关闭它,直到事务调用commit()和rollback()结束。
连接对象的db.commit()和db.rollback()方法分别表示事务提交和回退。
指针对象的cursor.close()方法关闭指针并释放相关资源。
指针对象的cursor.execute(query[,parameters])方法执行数据库查询。
指针对象的cursor.fetchall()可取出指针结果集中的所有行,返回的结果集一个元组(tuples)。
指针对象的cursor.fetchmany([size=cursor.arraysize])从查询结果集中取出多行,我们可利用可选的参数指定取出的行数。
指针对象的cursor.fetchone()从查询结果集中返回下一行。
指针对象的cursor.arraysize属性指定由cursor.fetchmany()方法返回行的数目,影响fetchall()的性能,默认值为1。
指针对象的cursor.rowcount属性指出上次查询或更新所发生行数。-1表示还没开始查询或没有查询到数据。
5.使用例子
#!/usr/bin/python
import MySQLdb
try:
connection = MySQLdb.connect(user="user",passwd="password",host="xxx",db="test")except:
print "Could not connect to MySQL server."
exit( 0 )
try:
cursor = connection.cursor()
cursor.execute( "SELECT note_id,note_detail FROM note where note_id = 1" )
print "Rows selected:", cursor.rowcount
for row in cursor.fetchall():
print "note : ", row[0], row[1]
cursor.close()
1.首先下载
MySQL for python
因为我们是在windows下用的,所以我下载了一个MySQL-python-1.2.2.win32-py2.5.exe
2.直接执行安装,只要你已经安装过python,那么安装会相当顺利,一切默认即可完成安装了。
3.加载模块
如果我们执行import MySQLdb,没有报错,说明安装成功了,不过千万要注意大小写哦,很容易搞错的。
4.模块中的常用函数
connect()方法用于连接数据库,返回一个数据库连接对象。如果要连接一个位于host.remote.com服务器上名为fourm的MySQL数据库,连接串可以这样写:
db = MySQLdb.connect(host="remote.com",user="user",passwd="xxx",db="fourm" )connect()的参数列表如下:
host,连接的数据库服务器主机名,默认为本地主机(localhost)。
user,连接数据库的用户名,默认为当前用户。
passwd,连接密码,没有默认值。
db,连接的数据库名,没有默认值。
conv,将文字映射到Python类型的字典。默认为MySQLdb.converters.conversions
cursorclass,cursor()使用的种类,默认值为MySQLdb.cursors.Cursor。
compress,启用协议压缩功能。
named_pipe,在windows中,与一个命名管道相连接。
init_command,一旦连接建立,就为数据库服务器指定一条语句来运行。
read_default_file,使用指定的MySQL配置文件。
read_default_group,读取的默认组。
unix_socket,在unix中,连接使用的套接字,默认使用TCP。
port,指定数据库服务器的连接端口,默认是3306。
连接对象的db.close()方法可关闭数据库连接,并释放相关资源。
连接对象的db.cursor([cursorClass])方法返回一个指针对象,用于访问和操作数据库中的数据。
连接对象的db.begin()方法用于开始一个事务,如果数据库的AUTOCOMMIT已经开启就关闭它,直到事务调用commit()和rollback()结束。
连接对象的db.commit()和db.rollback()方法分别表示事务提交和回退。
指针对象的cursor.close()方法关闭指针并释放相关资源。
指针对象的cursor.execute(query[,parameters])方法执行数据库查询。
指针对象的cursor.fetchall()可取出指针结果集中的所有行,返回的结果集一个元组(tuples)。
指针对象的cursor.fetchmany([size=cursor.arraysize])从查询结果集中取出多行,我们可利用可选的参数指定取出的行数。
指针对象的cursor.fetchone()从查询结果集中返回下一行。
指针对象的cursor.arraysize属性指定由cursor.fetchmany()方法返回行的数目,影响fetchall()的性能,默认值为1。
指针对象的cursor.rowcount属性指出上次查询或更新所发生行数。-1表示还没开始查询或没有查询到数据。
5.使用例子
#!/usr/bin/python
import MySQLdb
try:
connection = MySQLdb.connect(user="user",passwd="password",host="xxx",db="test")except:
print "Could not connect to MySQL server."
exit( 0 )
try:
cursor = connection.cursor()
cursor.execute( "SELECT note_id,note_detail FROM note where note_id = 1" )
print "Rows selected:", cursor.rowcount
for row in cursor.fetchall():
print "note : ", row[0], row[1]
cursor.close()