MySQL 5.6.26 源码安装包 与 cmake安装包链接:
操作系统版本:CentOS release 6.3 (Final)
安装过程:(记得挂载镜像,并且配置yum,方便yum安装各种依赖的包
CentOS配置yum: 1、cd /etc/yum.repos.d2、创建个任意目录,将所有文件移动到创建的目录中,除了CentOS-Media.repo3、编辑CentOS-Media.repovi CentOS-Media.repo[c6-media]name=CentOS-$releasever – Mediabaseurl=file:///media/CentOS/# file:///media/cdrom/# file:///media/cdrecorder/gpgCheck=1enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
4、创建/media/CentOS/目录5、挂载mount /dev/cdrom /media/CentOS/
[root@hank-yoon ~]# mkdir -p /export/servers
[root@hank-yoon servers]# 上传安装脚本、MySQL源码安装包,Cmake安装包
[root@hank-yoon servers]#lscmake-2.8.3.tar.gz mysql-5.6.26.tar.gz install.sh
[root@hank-yoon servers]#shinstall.sh
[root@hank-yoon servers]#cat install.sh 脚本内容 #!/bin/bash
# checkecho -e “\033[;37;34mCheck Memory Size…\033[0m”if [ `free -g|grep ^Mem|awk ‘{print $2}’` != 125 ]thenread -p “Memory size is `free -g|grep ^Mem|awk ‘{print $2}’`G , enter innodb_buffer_pool_size(default 20G) : ” poolelseecho -e “\033[;37;32mMemory Size is 125G , innodb_buffer_pool_size set 100G\033[0m”fiecho -e “\033[;37;34mCheck Network…\033[0m”#if ! ping -c 1 -w 1 www.baidu.com > /dev/null;then echo -e “\033[;37;31mPlease Check Network Before Setup\033[0m”;exit 1;else echo -e “\033[;37;32mOK\033[0m”;fiecho -e “\033[;37;34mCheck Packet…\033[0m”if ! ls mysql-5.6.26.tar.gz cmake-2.8.3.tar.gz > /dev/null;then echo -e “\033[;37;31mNo Packets\033[0m”;exit 1;else echo -e “\033[;37;32mOK\033[0m”;fi# replace yum.repos.d#rm -f /etc/yum.repos.d/*#wget -P /etc/yum.repos.d/-i ‘s/6.3/6.5/’ /etc/yum.repos.d/CentOS-Media.repo#echo -e “\033[;37;34mreplace yum.repos.d…\033[0m”
#wget mysql cmake
#change IO schedulerecho deadline > /sys/block/sda/queue/schedulerecho -e “\033[;37;34mchange IO scheduler to deadline…\033[0m”
# init enviromentecho -e “\033[;37;34mStarting Yum Install…\033[0m”yum install -y ncurses-devel glibc gcc gcc-c++ libstdc++* libtool cmake lrzsz libaio-develecho -e “\033[;37;32mYum Install Done\033[0m”echo -e “\033[;37;34mAdd MySQL OS User…\033[0m”useradd mysqlecho -e “\033[;37;32mAdd User Done\033[0m”
setuplog=/home/mysql/logs/install-logsetupdir=$(pwd)mysqldir=(/export/data/mysql/tmp /export/data/mysql/undo /export/data/mysql/data /export/servers/mysql/etc /export/data/mysql/dumps /export/data/mysql/log /home/mysql/scripts /home/mysql/logs)mkdir -p ${mysqldir[*]}chown mysql:mysql -R /export/data/mysql /home/mysql/
echo -e “\033[;37;34mExtracting package to /usr/local/src/\033[0m”tar xzf cmake-2.8.3.tar.gz -C /usr/local/srctar xzf mysql-5.6.26.tar.gz -C /usr/local/srcmv *.tar.gz /usr/local/srcecho -e “\033[;37;32mExtracting Done\033[0m”
# installecho -e “\033[;37;34mInstall Cmake…\033[0m”cd /usr/local/src/cmake-2.8.3 ; ./bootstrap && gmake && make installif [ $? = 0 ];then echo -e “\033[;37;32mCmake Install Done\033[0m”;else echo -e “\033[;37;31mCmake Install Faild\033[0m”;fi
echo -e “\033[;37;34mInstall MySQL…\033[0m”echo “Configure Error” > $setuplogcd /usr/local/src/mysql-5.6.26 ; cmake . -DCMAKE_INSTALL_PREFIX=/export/servers/mysql/ -DMYSQL_DATADIR=/export/data/mysql/data -DSYSCONFDIR=/export/servers/mysql/etc -DWITH_INNOBASE_StorAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_UNIX_ADDR=/export/data/mysql/tmp/mysql.sock -DENABLED_LOCAL_INFILE=ON -DENABLED_PROFILING=ON -DWITH_DEBUG=0 -DENABLE_DTRACE=OFF -DMYSQL_TCP_PORT=3358 2>> $setuplogmake && make installif [ $? = 0 ];then echo -e “\033[;37;32mMySQL Install Done\033[0m”;else echo -e “\033[;37;31mMySQL Install Faild\033[0m”;exit 1;fi/sbin/ldconfig /export/servers/mysql/lib/
echo -e “\033[;37;34mModify /home/mysql/.bash_profile…\033[0m”echo “export LANG=en_US.UTF-8” >> /home/mysql/.bash_profilesed -i ‘s!PATH=$PATH:$HOME/bin!PATH=$PATH:$HOME/bin:/export/servers/mysql/bin!’ /home/mysql/.bash_profilesource /home/mysql/.bash_profileecho -e “\033[;37;32mDONE\033[0m”
# my.cnfecho -e “\033[;37;34mCreate /export/servers/mysql/etc/my.cnf…\033[0m”cat >> /export/servers/mysql/etc/my.cnf << EOF[client]port = 3358socket = /export/data/mysql/tmp/mysql.sock
[mysqld]port = 3358socket = /export/data/mysql/tmp/mysql.sockdatadir = /export/data/mysql/data/
#— GLOBAL —#character-set-server = utf8lower_case_table_names = 1log-output = FILElog-error = /export/data/mysql/log/error.log
general_log = 0
general_log_file = /export/data/mysql/log/mysql.logpid-file = /export/data/mysql/mysql.pidslow-query-logslow_query_log_file = /export/data/mysql/log/slow.logtmpdir = /export/data/mysql/tmplong_query_time = 1
#thread_concurrency = 16thread_cache_size = 512table_open_cache = 16384table_definition_cache = 16384sort_buffer_size = 2Mjoin_buffer_size = 2Mread_buffer_size = 4Mread_rnd_buffer_size = 4Mkey_buffer_size = 8Mmyisam_sort_buffer_size = 8Mtmp_table_size = 64Mmax_heap_table_size = 64Mopen_files_limit = 65535query_cache_size = 0
#add z #################innodb_undo_directory = /export/data/mysql/undoinnodb_undo_tablespaces = 4explicit_defaults_for_timestamp = 1
#— NETWORK —#back_log = 1024max_allowed_packet = 16Minteractive_timeout = 28800wait_timeout = 28800skip-external-lockingmax-connections = 1000skip-name-resolve#read_only = 1#— REPL —#server-id = 360360log-bin = mysql-binbinlog_format = mixedexpire_logs_days = 7relay-log = relay-log
replicate-ignore-db = mysql.slave_master_inforeplicate-ignore-db = mysql.slave_relay_log_inforeplicate-ignore-db = mysql.slave_worker_inforeplicate-ignore-db = testreplicate-ignore-db = information_schemareplicate-ignore-db = performance_schema
log_slave_updatesskip-slave-startslave-parallel-workers= 4sync_master_info = 1sync_relay_log = 1sync_relay_log_info = 1relay_log_info_repository = TABLEmaster_info_repository = TABLE#rpl_semi_sync_master_enabled = 1#rpl_semi_sync_slave_enabled = 1#rpl_semi_sync_master_timeout = 1000
#— INNODB —#default-storage-engine = INNODBinnodb_data_home_dir = /export/data/mysql/datainnodb_file_per_tableinnodb_log_group_home_dir = /export/data/mysql/datainnodb_log_files_in_group = 3innodb_log_file_size = 512Minnodb_log_buffer_size = 16Minnodb_flush_log_at_trx_commit = 1innodb_lock_wait_timeout = 120innodb_flush_method = O_DIRECTinnodb_max_dirty_pages_pct = 75
#change z #####sync_binlog = 1innodb_buffer_pool_size = 100Ginnodb_data_file_path = ibdata1:2G;ibdata2:2G:autoextendinnodb_autoextend_increment = 500innodb_thread_concurrency = 32innodb_open_files = 65535innodb_write_io_threads = 20innodb_read_io_threads = 20innodb_spin_wait_delay = 10innodb_flush_neighbors = 1innodb_use_native_aio = 1innodb_io_capacity = 2000innodb_io_capacity_max = 6000relay_log_recovery = 1#innodb_additional_mem_pool_size = 128M
#change h #####
#innodb_numa_interleave=ONinnodb_lru_scan_depth=512innodb_checksum_algorithm=crc32innodb_purge_threads=4
[mysqldump]quickmax_allowed_packet = 16M
[mysql]# auto-rehash# Remove the next comment character if you are not familiar with SQL# safe-updatesdefault-character-set=utf8
[myisamchk]key_buffer_size = 128Msort_buffer_size = 128Mread_buffer = 2Mwrite_buffer = 2M
[mysqlhotcopy]interactive-timeout
EOFserverid=$(ifconfig |grep Bcast|grep ‘inet addr:’ | awk ‘{print $2}’ |awk -F. ‘{print $3$4}’)#serverid=$(ifconfig eth0|grep Bcast|grep ‘inet addr:’ | awk ‘{print $2}’ |awk -F. ‘{print $3$4}’)sed -i ‘s/360360/’$serverid’/’ /export/servers/mysql/etc/my.cnfif [ ! -z $pool ];then sed -i ‘s/innodb_buffer_pool_size = 100G/innodb_buffer_pool_size = ‘$pool’/’ /export/servers/mysql/etc/my.cnf;echo -e “\033[;37;34m`cat /export/servers/mysql/etc/my.cnf|grep innodb_buffer_pool_size`\033[0m”;fiecho -e “\033[;37;32mDONE\033[0m”
# start/export/servers/mysql/scripts/mysql_install_db –user=mysql –basedir=/export/servers/mysql/ –datadir=/export/data/mysql/data//export/servers/mysql/bin/mysqld_safe –defaults-file=/export/servers/mysql/etc/my.cnf &echo -e “\033[;37;34mStart MySQL\033[0m”for i in {1..500};do [ -S /export/data/mysql/tmp/mysql.sock ] && echo -e “\033[;37;32m[OK]\033[0m” && break || echo -n “. “;sleep 2;doneif [ ! -S /export/data/mysql/tmp/mysql.sock ];then echo -e “\033[;37;31m[Start Faild,See /export/data/mysql/log/error.log]\033[0m”;exit 1;fi
# cuttingecho -e “\033[;37;34mCreate Cutting.sh to Crontab\033[0m”cat >> /home/mysql/scripts/cutting.sh << EOF#!/bin/bashmysql=/export/servers/mysql/bin/mysqluser=backuppassword=’7FH3iwIX90VdUInu’
generallog=/export/data/mysql/log/mysql.logif [ -f \$generallog ]thenmv \$generallog \${generallog}.\`date “+%Y%m%d%H”\`\$mysql -u\$user -p\$password -e “flush no_write_to_binlog general logs;”fi

slowlog=/export/data/mysql/log/slow.logif [ \`date “+%w”\` = 6 -a -f \$slowlog ]thenmv \$slowlog \${slowlog}.\`date “+%Y%m%d%H”\`\$mysql -u\$user -p\$password -e “flush no_write_to_binlog slow logs;”fi
find /export/data/mysql/log/ -type f -name “*.log.*” -mtime +7 |xargs rm -fEOFchown mysql.mysql /home/mysql/scripts/cutting.shchmod +x /home/mysql/scripts/cutting.shecho “1 0 * * * /home/mysql/scripts/cutting.sh” >> /var/spool/cron/mysqlecho “1 0 * * * /usr/sbin/ntpdate 172.17.1.134 | hwclock -w” >> /var/spool/cron/rootchown mysql.root /var/spool/cron/mysqlchmod 600 /var/spool/cron/mysql/etc/init.d/crond restartecho -e “\033[;37;32mDONE\033[0m”mkdir /var/lib/mysqlln -s /export/data/mysql/tmp/mysql.sock /var/lib/mysql/mysql.sockchown -R mysql.mysql /var/lib/mysql
echo -e “\033[;37;34mClean…\033[0m”> /export/data/mysql/log/mysql.logrm -f ${setupdir}/`basename $0`echo -e “\033[;37;32mDONE\033[0m”
# add servicecp /export/servers/mysql/support-files/mysql.server /etc/init.d/mysql
# rpl semi sync ON/export/servers/mysql/bin/mysql -uroot -e “install plugin rpl_semi_sync_master soname ‘semisync_master.so'”/export/servers/mysql/bin/mysql -uroot -e “install plugin rpl_semi_sync_slave soname ‘semisync_slave.so'”;sed -i ‘s/#rpl_semi_sync_master_enabled/rpl_semi_sync_master_enabled/’ /export/servers/mysql/etc/my.cnfsed -i ‘s/#rpl_semi_sync_slave_enabled/rpl_semi_sync_slave_enabled/’ /export/servers/mysql/etc/my.cnfsed -i ‘s/#rpl_semi_sync_master_timeout/rpl_semi_sync_master_timeout/’ /export/servers/mysql/etc/my.cnf
# mysql restartservice mysql restart
如何应用VB编程如何修改注册表编辑器?
关键词: API regsetvalue regcreatekeyA regclosekey1当然是先声明API函数啦声明三各API它们分别是:RegSetValue、RegCreateKey、RegCloseKey,其作用是设置某一个主键的键值、创建一个主键、关闭对注册表主键的操作...^_^Private Declare Function RegSetValue Lib Alias RegSetValueA (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long Private Declare Function RegCreateKey Lib Alias RegCreateKeyA (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Private Declare Function RegCloseKey Lib (ByVal hKey As Long) As Long这三个不用亲自打上去 去API文本浏览器复制进去就哦了2 然后声明以下两个常数,要进行注册表写入的位置是在HKEY_LOCAL_MACHINE下,我们可以在VB自带的API文本查看器中找到这些常数的定义方法。 Private Const HKEY_LOCAL_MACHINE = &H Private Const REG_SZ = 13写注册表Dim Vican As Long打开 HKEY_LOCAL_MACHINE 下的 software\microsoft\windows\currentVersion\run 主键RegCreateKey HKEY_LOCAL_MACHINE, software\microsoft\windows\currentVersion\run, Vican将此主键下的“默认”项的值改为c:\windows\system\,也就是要开机运行的程序路径RegSetValue Ret2, vbNullString, REG_SZ, c:\windows\system\, 4关闭对主键的操作RegCloseKey Vican切记c:\windows\system\ 这个就是你想开机就运行的程序!就是这样的,你可以一步一步的来试一下子!
我打开CF为什么说当前页面脚本发生错误?怎么办?
某个网页可能会无法正常显示或工作,您可能会收到一条类似于以下之一的错误消息:该网页上的问题可能使其无法正常显示或功能不正常。 以后,双击显示在状态栏中的警告图标,就可以显示上述消息。 如果您单击“显示详细信息”,则会显示类似于下面的错误详细信息:Line:4Char:1Error:Object doesn’t support this property or :0URL:Runtime Error has you wish to Debug?Line:4Error:Object doesn’t support this property or method.下面的警告消息也可能出现在 Microsoft Internet Explorer“状态”栏中:已完毕,但网页上有错误出现此问题是因为该网页的 HTML 源代码不能使用客户端脚本(如 Microsoft JScript 或 Visual basic 脚本)正确工作。 发生此问题可能是因为以下原因之一: • 网页的 HTML 源代码中有问题。 • 您的计算机或网络上阻止了活动脚本、ActiveX 控件或 Java 小程序。 Internet Explorer 或另外一种程序(如防病毒程序或防火墙)可以配置为阻止活动脚本、ActiveX 控件或 Java 小程序• 防病毒软件配置为扫描您的“临时 Internet 文件”或“已下载的程序文件”文件夹。 • 您计算机上的脚本引擎损坏或过时。 • 您计算机上的 Internet 相关文件夹损坏。 • 您的视频卡驱动程序已损坏或者已过时。 • 您计算机上的 DirectX 组件损坏或过时。 注意:服务器端脚本 -- 如 Active Server pages (ASp) 中的 Visual basic 脚本 -- 运行在 Web 服务器上。 因服务器端脚本故障而发生的脚本错误不在 Internet Explorer 中生成错误消息,但也可能会创建一个不能正确显示或工作的网页。 本文中的故障排除信息适用于服务器端脚本错误。 如果您怀疑服务器端脚本有问题,请与 Web 服务器的管理员联系。 解决方案使用本文中的故障排除方法时要按它们出现的顺序进行。 在您完成一个故障排除部分后,请进行测试以确定是否仍发生此脚本错误。 如果问题已解决,则不必继续下一部分。 如果问题未解决,则继续执行下一部分。 从另一个用户帐户、另一个浏览器和另一台计算机测试网页如果问题只在您查看一个或两个网页时发生,则从另一个用户帐户、另一个浏览器或另一台计算机查看这些网页,以确定问题是否依然存在。 如果脚本错误依然存在,则可能是网页的编写有问题。 请与网站管理员或内容开发者联系,告诉他们网页存在的问题。 如果从另一个用户帐户使用网页时脚本错误未发生,则问题可能是您的用户配置文件的文件或设置造成的。 如果在从另一个浏览器或另一台计算机使用网页时脚本错误未发生,则继续进行故障排除操作。 确认活动脚本、ActiveX 和 Java 未被阻止确认您计算机上的 Internet Explorer 或另外一种程序(如防病毒程序或防火墙)未配置为阻止活动脚本、ActiveX 控件或 Java 小程序。 在 Internet Explorer 的“高”安全级别,活动脚本、ActiveX 控件和 Java 小程序被关闭。 默认情况下,Internet Explorer 6 和某些 Internet Explorer 5.x 版本针对受限站点区域使用“高”安全级别。 默认情况下,Microsoft Windows Server 2003 针对受限站点区域和 Internet 区域使用“高”安全级别。 如要为当前网页重置 Internet Explorer 安全设置,请按照下列步骤操作:1. 启动 Internet Explorer。 2. 在“工具”菜单上,单击“Internet 选项”。 3. 在“Internet 选项”对话框中,单击“安全”。 4. 单击“默认级别”。 5. 单击“确定”。 请参见您使用的防病毒程序或防火墙的文档资料,以确定如何打开脚本、ActiveX 和 Java 小程序。 确认您的防病毒程序未设置为扫描“临时 Internet 文件”或“已下载的程序文件”文件夹请参见您使用的防病毒程序的文档资料,以确定如何防止该程序扫描“临时 Internet 文件”或“已下载的程序文件”文件夹。 删除所有临时的 Internet 相关文件从您的计算机中删除所有临时的 Internet 相关文件。 为此,请按照下列步骤操作:1. 启动 Internet Explorer。 2. 在“工具”菜单上,单击“Internet 选项”。 3. 单击“常规”选项卡。 4. 在“Internet 临时文件”下,单击“设置”。 5. 单击“删除文件”。 6. 单击“确定”。 7. 单击“删除 Cookies”。 8. 单击“确定”。 9. 在“历史记录”下,单击“清除历史记录”,然后单击“是”。 10. 单击“确定”。
如何使用python连接数据库,插入并查询数据
你可以访问Python数据库接口及API查看详细的支持数据库列表。 不同的数据库你需要下载不同的DB API模块,例如你需要访问oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。 DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。 Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。 Python DB-API使用流程:引入 API 模块。 获取与数据库的连接。 执行SQL语句和存储过程。 关闭数据库连接。 什么是MySQLdb?MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。 如何安装MySQLdb?为了用DB-API编写MySQL脚本,必须确保已经安装了MySQL。 复制以下代码,并执行:#!/usr/bin/python# -*- coding: UTF-8 -*-import MySQLdb如果执行后的输出结果如下所示,意味着你没有安装 MySQLdb 模块:Traceback (most recent call last):File , line 3, in import MySQLdb ImportError: No module named MySQLdb 安装MySQLdb,请访问 ,(Linux平台可以访问:)从这里可选择适合您的平台的安装包,分为预编译的二进制文件和源代码安装包。 如果您选择二进制文件发行版本的话,安装过程基本安装提示即可完成。 如果从源代码进行安装的话,则需要切换到MySQLdb发行版本的顶级目录,并键入下列命令: $ gunzip $ tar -xvf $ cd MySQL-python-1.2.2 $ python build $ python install 注意:请确保您有root权限来安装上述模块。 数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。 连接数据库TESTDB使用的用户名为 testuser ,密码为 test123,你可以可以自己设定或者直接使用root用户名及其密码,Mysql数据库用户授权请使用Grant命令。 在你的机子上已经安装了 Python MySQLdb 模块。 如果您对sql语句不熟悉,可以访问我们的 SQL基础教程 实例: 以下实例链接Mysql的TESTDB数据库: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # 使用execute方法执行SQL语句 (SELECT VERSION()) # 使用 fetchone() 方法获取一条数据库。 data = () print Database version : %s % data # 关闭数据库连接 () 执行以上脚本输出结果如下: Database version : 5.0.45 创建数据库表 如果数据库连接存在我们可以使用execute()方法来为数据库创建表,如下所示创建表EMPLOYEE: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # 如果数据表已经存在使用 execute() 方法删除表。 (DROP TABLE IF EXISTS EMPLOYEE) # 创建数据表SQL语句 sql = CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT ) (sql) # 关闭数据库连接 () 数据库插入操作 以下实例使用执行 SQL INSERT 语句向表 EMPLOYEE 插入记录: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # SQL 插入语句 sql = INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (Mac, Mohan, 20, M, 2000) try: # 执行sql语句 (sql) # 提交到数据库执行 () except: # Rollback in case there is any error () # 关闭数据库连接 () 以上例子也可以写成如下形式: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # SQL 插入语句 sql = INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES (%s, %s, %d, %c, %d ) % \ (Mac, Mohan, 20, M, 2000) try: # 执行sql语句 (sql) # 提交到数据库执行 () except: # 发生错误时回滚 () # 关闭数据库连接 () 实例: 以下代码使用变量向SQL语句中传递参数: .................................. user_id = test123 password = password (insert into Login values(%s, %s) % \ (user_id, password)) .................................. 数据库查询操作 Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。 fetchone(): 该方法获取下一个查询结果集。 结果集是一个对象 fetchall():接收全部的返回结果行. rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。 实例: 查询EMPLOYEE表中salary(工资)字段大于1000的所有数据: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # SQL 查询语句 sql = SELECT * FROM EMPLOYEE \ WHERE INCOME > %d % (1000) try: # 执行SQL语句 (sql) # 获取所有记录列表 results = () for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印结果 print fname=%s,lname=%s,age=%d,sex=%s,income=%d % \ (fname, lname, age, sex, income ) except: print Error: unable to fecth data # 关闭数据库连接 () 以上脚本执行结果如下: fname=Mac, lname=Mohan, age=20, sex=M, income=2000 数据库更新操作 更新操作用于更新数据表的的数据,以下实例将 TESTDB表中的 SEX 字段全部修改为 M,AGE 字段递增1: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # SQL 更新语句 sql = UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = %c % (M) try: # 执行SQL语句 (sql) # 提交到数据库执行 () except: # 发生错误时回滚 () # 关闭数据库连接 () 删除操作 删除操作用于删除数据表中的数据,以下实例演示了删除数据表 EMPLOYEE 中 AGE 大于 20 的所有数据: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # SQL 删除语句 sql = DELETE FROM EMPLOYEE WHERE AGE > %d % (20) try: # 执行SQL语句 (sql) # 提交修改 () except: # 发生错误时回滚 () # 关闭连接 () 执行事务 事务机制可以确保数据一致性。 事务应该具有4个属性:原子性、一致性、隔离性、持久性。 这四个属性通常称为ACID特性。 原子性(atomicity)。 一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency)。 事务必须是使数据库从一个一致性状态变到另一个一致性状态。 一致性与原子性是密切相关的。 隔离性(isolation)。 一个事务的执行不能被其他事务干扰。 即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 持久性(durability)。 持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。 接下来的其他操作或故障不应该对其有任何影响。 Python DB API 2.0 的事务提供了两个方法 commit 或 rollback。
发表评论