Python操作MySQL数据库

数据库python-mysql安装参考:http://blog.phpfs.com/archives/2343.html

# -*- coding: UTF-8 -*-
import MySQLdb
import time
#警告信息try except是无法捕捉的
from warnings import filterwarnings
filterwarnings('error', category = MySQLdb.Warning)
cursor = conn = delete_id = update_id = 0
try:
    conn = MySQLdb.connect(host='10.200.10.203', user='test', passwd='test', db='test', port=3306,charset='utf8')
    cursor = conn.cursor()
    #创建表
    create_tabl_sql = """CREATE TABLE IF NOT EXISTS `test` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(200) NOT NULL,
      `create_time` datetime NOT NULL,
      `content` text NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8"""
    #cursor.execute(create_tabl_sql)
except MySQLdb.Warning, w:
    print "警告信息 %s" % str(w)
except MySQLdb.Error, e:
    print "错误信息 %d %s" % (e.args[0], e.args[1])

# 插入数据
name = '张三'
create_time = time.strftime('%Y-%m-%d %H:%M:%S')
content = '这是内容'
insert_data_sql = "insert into `test` (`name`, `create_time`, `content`) values ('" + name + "','" + create_time + "','" + content + "')"
print "执行语句: %s" % insert_data_sql
try:
    cursor.execute(insert_data_sql)
    conn.commit()
except :
    # 异常回滚
    print '插入异常回滚'
    conn.rollback()
# 查询数据
select_data_sql = "select * from test order by id desc limit 2"
print "执行语句: %s" % select_data_sql
try:
    cursor.execute(select_data_sql)
    results = cursor.fetchall()
    for row in results:
        print '编号:%d' % (row[0])
        print u'姓名:%s' % (row[1])
        print u'内容:%s' % (row[3])
    update_id = results[0][0]
    delete_id = results[1][0]
except :
    # 异常回滚
    print '查询数据失败'

# 删除数据
delete_data_sql = "delete from `test` WHERE id  = %d " % (delete_id)
print '执行语句: %s' % delete_data_sql
try:
   cursor.execute(delete_data_sql)
   conn.commit()
except:
    print '删除异常回滚'
    conn.rollback()
# 更新数据
name_2 = '李四'
content_2 = '这是新内容'
update_data_sql = "update `test` set name ='" + name_2 + "',content='" + content_2 + "' where id = %d" % (update_id)
print '执行语句: %s' % update_data_sql
try:
    cursor.execute(update_data_sql)
    conn.commit()
except:
    print '更新异常回滚'
    conn.rollback()

cursor.close()
conn.close()

 

Python警告信息捕捉

异常和警告处理案例

# -*- coding: UTF-8 -*-
import MySQLdb
#警告信息try except是无法捕捉的
from warnings import filterwarnings
filterwarnings('error', category = MySQLdb.Warning)
#当然也可以屏蔽警告filterwarnings("ignore")
try:
    conn = MySQLdb.connect(host='127.0.0.1',user='test',passwd='test',db='test',port=3306,charset='utf8')
    cursor = conn.cursor()
    #创建表
    create_tabl_sql = """CREATE TABLE IF NOT EXISTS `test1` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(200) NOT NULL,
      `create_time` datetime NOT NULL,
      `content` text NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8"""
    cursor.execute(create_tabl_sql)
    cursor.close()
    conn.close()
except MySQLdb.Warning, w:
    print "警告信息 %s" % str(w)
except MySQLdb.Error, e:
    print "错误信息 %d %s" % (e.args[0], e.args[1])


 

桶排序

桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)
思想:
设待排序序列的元素取值范围为0到m,则我们新建一个大小为m+1的临时数组并把初始值都设为0,遍历待排序序列,把待排序序列中元素的值作为临时数组的下标,找出临时数组中对应该下标的元素使之+1;然后遍历临时数组,把临时数组中元素大于0的下标作为值按次序依次填入待排序数组,元素的值作为重复填入该下标的次数,遍历完成则排序结束序列有序。
示例:

 $v){
    for($i = 0; $i < $v; $i++) {
        echo $k;
    }
}

 
应用大量数据排序
比如9亿不重复的9位数字排序,可以初始化10亿个bit来标示存在这个数字是否存在,如果该位是1就输出该位整数

Xcode经典快捷键

前言:你切换Xcode窗口使用鼠标吗?还在为窗口打开关闭发愁吗?Joyous为你提供了一套特别有用的快捷键

1.右边属性窗口切换使用alt+command+1/2/3/4/5/6
2.右边属性栏目打开,关闭alt+command+0
3.左边文件导航栏目打开,关闭command+0
4.左边文件导航栏目选项使用command+1/2/3/4/5/6/7
5.bug窗口显示关闭使用shift+command+y
6.editor窗口切换
command+return显示show the standard editor
alt+command+return显示show the assistant editor
control+alt+command+return显示show the version editor

后记:有木有更新?有木有其他技巧?—有!

Objcetive-c基础知识

Foundation Kit基础知识

1.范围作用
NSRange
typedef struct _NSRange {
unsigned int location;
unsigned int length;
} NSRange;
使用:location是开始位置,length是元素个数;通常在字符串范围或者数组使用
创建NSRange
1.1)直接赋值给字段(range.location = 12,range.length=13)
1.2)使用聚合机制(range={4,5})
1.3)使用快捷函数(range=NSMakeRange(4,5))

2.几何数据类型
有NSPoint(点),NSSize(长和宽),NSRect(面),快捷方法有:NSMakePoint(),NSMakeSize(),NSMakeRect()

3.NSString字符串
3.1)创建字符串stringWithFormat
知识点:这里的方法是类方法,方法前面有+,方法属于类对象,那么这个方法就是工厂方法
3.2)字符串长度发方法length
3.3)字符串比较
isEqualToString是返回一个YES或者NO的BOOL值而compare返回是一个枚举值而且compare是逐个字母比较
hasPrefix:(NSString *)astring是判断字符串是否有astring开头,hasSuffix是否以astring结尾
3.4)NSstring可变字符串stringWithCapacity也是一个NSMutableString对象(这个类是NSString的子类,所以你可以使用他的很多方法)方法
常见的字符串操作方法有:appendString或者appendFormat附加字符串,删除字符串deleteCharactersInRange(从名字上就可以知道这个方法需要一个开始位置和一个长度,所以需要一个range参数)

Continue reading

Mac下配置安卓开发环境

1.下载
android-sdk_r10-mac_x86 3.0.zip(原因是因为不能下载!!!所以只好下载这个,然后更新!!!需要的可以留言给我)
eclipse-java-juno-SR2-macosx-cocoa.tar.gz
jdk-7u17-macosx-x64.dmg

2.安装sdk目录要选好

3.配置环境变量(我实用的zsh,所以修改的是zhsrc文件,你用bashrc就修改对应文件即可!注意linux也是这样的)

export PATH=${PATH}:/Users/Baipin-iOS-Testing/baipin/android/androdiSdk/tools:/Users/Baipin-iOS-Testing/baipin/android/androdiSdk/platform-tools

source .zshrc 立即生效

蛇形矩阵

<?php
/*
* 蛇形矩阵一
*/
$n = 5;
//填充数组,array_fill第一个参数是起始下标,第二个是总个数,第三个是元素
$arr = array_fill(0, $n, array_fill(0, $n, 0));
$x = 0;
$y = $n – 1;
$p = $arr[$x][$y] = 1;//开始位置
//向下,向左,向上,向右(注意范围)
while($p < $n * $n) {
while($x + 1 < $n && $arr[$x+1][$y] == 0) {
++$x;
$arr[$x][$y] = ++$p;
}
while($y – 1 >= 0 && $arr[$x][$y-1] == 0) {
–$y;
$arr[$x][$y] = ++$p;
}
while($x – 1 >= 0 && $arr[$x-1][$y] == 0) {
–$x;
$arr[$x][$y] = ++$p;
}
while($y + 1 < $n && $arr[$x][$y+1] == 0) {
++$y;
$arr[$x][$y] = ++$p;
}
}
for ($i = 0;$i < $n;$i++) {
for($j = 0; $j < $n;$j++) {
echo $arr[$i][$j].” “;
}
echo “<br>”;
}
?>

输出结构是:

13 14 15 16 1
12 23 24 17 2
11 22 25 18 3
10 21 20 19 4
9 8 7 6 5

今天看书看到的,就写出来。今天又加强学习了array_fill数组填充函数

开灯问题

<?php

/*

* 开灯问题

* 描述:

* n盏灯,编号为1——n,第一个人把所有的灯打开,第二个人会按下所有编号为2的倍数的开关

* 这样本来开着的灯会关上,第三个人会按下3的倍数的开关,那么关的灯会打开,开的灯会

* 关掉,依次类推,问最后开着的灯的编号是?(k<=n<=1000)

*/

$n = 100;

$k = 10;

//第一个参数是开始的索引,第二个是填充个数,第三个是填充的元素值

$deng = array_fill(1, $n, 0);

for ($i = 1;$i <= $k;$i++) {

for ($j = 1;$j <= $n;$j++) {

if ($j % $i == 0) {

$deng[$j] = !$deng[$j];

}

}

}

for ($i = 1;$i <= $n; $i++) {

if($deng[$i]) {

echo $i.” “;

}

}

?>

这样不论如何变换都可以知道结果了,比如:关着的编号是?刚开始灯是开着的,然后求关着和开着的呢???是不是很有意思呢?