每日学习笔记(2)

1,使用python提交post请求时,如果参数中包含中文,则会提交失败,因此需要将参数进行utf-8编码,示例如下:

        self.name = name.encode("utf-8")

 2,一直在linux下使用python2.4,习惯了print 'hello'这样的写法,今天换到windows下,并且安装了python3.1后发现print是一个函数,因此要写成print('hello'),悲剧,但目前项目中都还是用的老旧的语法,还是得继续2.4才好。

3,python中序列化及反序列化一个对象,

代码
import pickle

def serializeObject(obj, filePath):
    output 
= open(filePath, 'wb'#二进制写模式打开
    pickle.dump(obj, output) #序列化
    output.close()
    
def deSerializeObject(filePath):
    
try:
        
in = open(filePath, 'rb'#二进制读模式打开
        obj = pickle.load(in#反序列化
        return obj
    
except EOFError:
        
return None
    
except IOError:
        
return None

4,使用trigger_error而不是die,这样对用户来说更加友好

    mysql_connect($host,$user,$password) or trigger_error"Could not connect: " . mysql_error ());

5,mysql_query对于select等返回resultsetsql语句来说,运行成功返回一个resource,发生错误则返回FALSE,而对于insert,update,

delete,dropsql语句,运行成功返回TRUE,发生错误则返回FALSE;

代码
<?php
// This could be supplied by a user, for example
$firstname = 'fred';
$lastname  = 'fox';

// Formulate Query
// This is the best way to perform a SQL query
// For more examples, see mysql_real_escape_string()

$query = sprintf("SELECT firstname, lastname, address, age FROM friends WHERE firstname='%s' AND lastname='%s'",
    
mysql_real_escape_string($firstname),
    
mysql_real_escape_string($lastname));

// Perform Query
$result = mysql_query($query);

// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.

if (!$result) {
    
$message  = 'Invalid query: ' . mysql_error() . "\n";
    
$message .= 'Whole query: ' . $query;
    
die($message);
}

// Use result
// Attempting to print $result won't allow access to information in the resource
// One of the mysql result functions must be used
// See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.

while ($row = mysql_fetch_assoc($result)) {
    
echo $row['firstname'];
    
echo $row['lastname'];
    
echo $row['address'];
    
echo $row['age'];
}

// Free the resources associated with the result set
// This is done automatically at the end of the script

mysql_free_result($result);
?>

6,mysql_fetch_array其实是取结果集的一行到一个数组中,它可以是一个关联数组(MYSQL_ASSOC)或数字数组(MYSQL_NUM),默认情况下两者都可以使用

代码
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
    
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
    
printf ("ID: %s  Name: %s", $row[0], $row["name"]);
}

mysql_free_result($result);
?>

mysql_fetch_row相比,mysql_fetch_array也并不慢的

代码
<?php
$result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
if (!$result) {
    
echo 'Could not run query: ' . mysql_error();
    
exit;
}
$row = mysql_fetch_row($result);

echo $row[0]; // 42
echo $row[1]; // the email value
?>

 

7mysql_close()并不一定需要写,因为非持久的连接会在脚本执行完毕后自动关闭

 

posted on 2010-04-28 20:31  Phinecos(洞庭散人)  阅读(706)  评论(0编辑  收藏  举报

导航