ArthurXF从业10年的CTO,受上海非凡学院邀请,进行PHP,CSS,FREEBSD等网络技能授课培训,有意向参加的,请联系.
  其实这个动作也很简单,只是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()
Tags: ,
我们可能会在项目中碰到要求将数据库中某个字段的值修改成另外一个,那么大家可能会马上想到用update.举例说明:
将字段A中的值为1的,全部替换成2.
SQL语句就是这么写:update table set a=2 where a=1;

那么如果我们要讲字段A值中的包含1的,替换成2呢?
例如:a=2211,现在要替换成2222,就是把1换成2
SQl语句这么写:update table set a=REPLACE(a,'1','2');

这个方法还是很有用的,希望对大家有些帮助。


引用
本文由ArthurXF倾情奉献,另ArthurXF受聘于上海非凡进修学院进行PHP等IT课程培训,有意学习者,可以免费试听,联系电话:021-51097877,QQ:29011218,MSN:onenight11@hotmail.com
  本文介绍的的规则是基于MYSQL5.1,低版本数据库略有不同。
  请大家先理解两个概念:
引用
1.什么叫做字符集
字符集就是一套符号和字符编码的集合。
2.什么叫做校对规则
校对规则就是在字符集内用于比较字符的一套规则。


引用
MYSQL5.1数据库可以做到
·  使用多种字符集来存储字符串
·  使用多种校对规则来比较字符串
·  在同一台服务器、同一个数据库或甚至在同一个表中使用不同字符集或校对规则来混合字符串
·  允许定义任何级别的字符集和校对规则


引用
MYSQL能定义下面4种级别的字符集和校对规则:
1.服务器级别的字符集和校对规则
设置方法:mysqld --default-character-set=latin1 --default-collation=latin1_swedish_ci

2.数据库级别的字符集和校对规则
设置方法:建立库时:CREATE DATABASE db_name DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
修改库时:ALTER DATABASE db_name DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;

3.表级别的字符集和校对规则
设置方法:
建表:CREATE TABLE tbl_name (column_list)  [DEFAULT CHARACTER SET charset_name [COLLATE collation_name]]
改表:ALTER TABLE tbl_name  [DEFAULT CHARACTER SET charset_name] [COLLATE collation_name]

4.列级别的字符集和校对规则
设置方法:col_name {CHAR | VARCHAR | TEXT} (col_length) [CHARACTER SET charset_name [COLLATE collation_name]]


引用
连接字符集和校对规则
整个连接过程包括2个阶段,客户端发送请求,服务器端响应请求。其中涉及了3种连接过程中的字符集和校对规则:
1.当从客户端发送给服务器端的请求属于哪种字符集和校对规则
设置方法:SET character_set_client = x;
2.服务端收到请求后,应该将请求转换为哪种字符集和校对规则
设置方法:SET character_set_results = x;
3.服务端发送结果集或者错误信息给客户端用哪种字符集和校对规则
设置方法:SET character_set_connection = x;

综合设置方式:SET NAMES 'x'
这个语句等价于上面3条语句的集合,也就是3中情况都使用相同的字符集的时候,可以用这一句代替上面3句。


这样大家应该对字符集和校对规则有些了解了吧。
我来解释一下大家为什么会出现乱码的问题。其实也就是3个连接过程中的字符集和校对规则设定不匹配。
例如:数据库定义的字符集为GB2312,可是页面要求显示utf-8的,那么光配置SET NAMES 'utf8'是不能解决问题的。首先从页面将utf-8的数据传给程序,程序拿到以后就要使用utf-8的字符集将数据发送给服务器端。那么就要设置SET character_set_client = ‘utf8’;服务器端要使用GB2312的字符集存储数据或者读取数据,那么就要设置SET character_set_results = ‘GB2312’;之后服务器端再用utf8的字符集将数据返回到客户端,就要设置SET character_set_connection = ‘utf8’;这样就不会出现乱码了。
注:html页面上使用的编码为"utf-8",一般程序中使用的'utf8',这两个写法略有区别。

引用
本文由ArthurXF倾情奉献,另ArthurXF受聘于上海非凡进修学院进行PHP等IT课程培训,有意学习者,可以免费试听,联系电话:021-51097877,QQ:29011218,MSN:onenight11@hotmail.com
很多人都不知道freebsd下如何重启mysql.现在我把命令放到下面,希望对大家有些帮忙。
/usr/local/etc/rc.d/mysql-server restart
Tags: ,
  很多朋友不太习惯使用集成包安装,都来问我一些用ports安装apache+mysql+php的问题,我这里就重新写一篇文章,来解决这些问题。此文章由ArthurXF倾情奉献,谢谢支持。

一、安装mysql51
引用
先添加mysql组和mysql用户
pw addgroup mysql
pw adduser mysql

开始安装
cd /usr/ports/databases/mysql51-server/
make
make thread-safe-client=enable dtrace=disable assembler=enable with_big_tables=yes with_embedded_server=yes with_local_infile=yes with_plugins=partition,innobase,myisammrg WITH_CHARSET=utf8 WITH_XCHARSET=all WITH_COLLATION=utf8_general_ci WITH_PROC_SCOPE_PTH=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes SKIP_DNS_CHECK=yes install clean  // 设定编码字符集为utf-8
cp /usr/local/share/mysql/my-large.cnf /etc/my.cnf
//服务器内存1G,但是与apache在一起/usr/local/share/mysql下面有5个my-xxxx.cnf文件
my-small.cnf               最小配置安装,内存<=64M,数据数量最少
my-medium.cnf             32M<内存<64M,或者内存有128M,但是数据库与web服务器公用内存
my-large.cnf               内存=512M
my-huge.cnf               1G<内存<2G,服务器主要运行mysql
my-innodb-heavy-4G.cnf   innodb格式数据大于4G的


因为如果你安装系统的时候默认分配空间的话/var一般的空间比例很小,也就3G,对于大数据库的话,肯定是不够用的,所以我们这里把数据库搬到/usr去,一般/usr的空间都是最大的,这样可以保证数据库空间充足。
搬mysql数据库需要操作下面的命令,如果不搬这个可以跳过。本文适合最新的FreeBSD6.2,其他版本可能文件名会有变化,请自行查找
vi /etc/rc.conf
增加
mysql_dbdir="/usr/local/db/mysql"
重起服务器,再执行下面的命令。
cd  /usr/local
mysql_install_db --user=mysql --datadir=/usr/local/db/mysql/data #建立数据库目录
mysqld_safe & #启动mysql


二、安装apache22+php5
引用
#cd /usr/ports/www/apache22/
选择你需要安装的模块
#make config
如果你的服务器是多个CPU的,可以把Apache以worker模式运行,则需要修改Makefile文件。
# ee Makefile
将WITH_MPM?=      prefork # or worker, event, itk改成:
WITH_MPM?=      worker # or worker, event, itk
开始安装了
# make install clean

安装php5
cd /usr/ports/lang/php5/
make config #选择php的模块,一定要选择apache module,否则不会自动安装到apahce里面的,那样php就不会执行的。
make
make install clean

安装php5-extensions
cd /usr/ports/lang/php5-extensions/
make config #选择php的扩展模块
make
make install clean

配置/usr/local/etc/apache/httpd.conf:
修改

   DirectoryIndex index.html index.htm index index.php index.phps


如果你需要修改网站根目录,就修改下面两个地方,下面仅仅是个例子,大家可根据需要自行修改,确保一致即可。
DocumentRoot "/usr/local/www/web"

 Options Indexes FollowSymLinks
去掉Indexes可以限制浏览你的主页目录

加入
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps #可不加
*注意:第二行主要为查看php代码用,加上的话web目录下的所有扩展名为.phps的文件在被浏览器访问时都显示其源代码

配置/usr/local/etc/php.ini:
cd /usr/local/etc/
cp php.ini-recommended php.ini
vi php.ini
在error_reporting  =  E_ALL前面加上;
将error_reporting = E_ALL & ~E_NOTICE前面的;去掉
*将报错信息设置改成去掉notice

upload_max_filesize = 2M
上传最大文件尺寸可根据需要修改

date.timezone = CST
设置服务器时区为中国的时区


apachectl start
echo "" > /usr/loacl/www/data/info.php
可能你的apache启动的时候和我一样会报这样的错误:
[Wed Jan 02 19:54:30 2008] [warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter

解决这个错误,执行如下操作:
kldload accf_http
grep accf /boot/defaults/loader.conf
显示内容如下
accf_data_load="NO" # Wait for data accept filter
accf_http_load="NO" # Wait for full HTTP request accept filter #将这个"NO"改成"YES"
vi /boot/defaults/loader.conf
找到Other modules 就可以找到accf_http_load了。

访问http://服务器的IP/info.php,如果有php的说明文件说明基本的php+apache2已经工作正常!

开机后自动启动:
echo 'mysql_enable="YES" ' >> /etc/rc.conf
echo 'apache22_enable="YES" ' >> /etc/rc.conf
以便开机后自动启动mysql apache
如果启动不了,就执行下面的命令
cp /usr/local/share/mysql/mysql.server /usr/local/etc/rc.d/mysql.sh
这样mysql就可以自动执行了。

以上文章是由ArthurXF倾情奉献,谢谢支持!

现在ArthurXF本人正在搞PHP等技术培训,如果想学习的人可以跟我联系。另外培训的招生简章在这个网址,想了解的可以去看看。加我QQ:29011218交流也可。
PHP培训招生简章
Tags: , , ,
分页: 5/9 第一页 上页 1 2 3 4 5 6 7 8 9 下页 最后页 [ 显示模式: 摘要 | 列表 ]