图片 5

主从复制,使用sql脚本输出交替不同的背景色的html信息的方法分享

pymysql达成多少查询

import pymysql

# 创建和数据库服务器的连接 服务器地址   端口    用户名     密码  数据库名 通信使用字符和数据库字符集一致
conn = pymysql.connect(host='localhost', port=3306, user='root', password='mysql',database='python_test_1', charset='utf8')

# 获取游标
cursor = conn.cursor()

# 执行SQL语句 返回值就是SQL语句在执行过程中影响的行数
sql = """select * from hero;"""

row_count = cursor.execute(sql)
print("SQL语句执行影响的行数%d" % row_count)

# 取出结果集中一行  返回的结果是一行 (1, '妲己', 2)
# print(cursor.fetchone())

# 取出结果集中的所有数据  返回 ((一行数据),(),())
# ((1, '妲己', 2), (2, '李白', 1), (3, '程咬金', 3), (4, '亚瑟', 5), (5, '荆轲', 99))
for line in cursor.fetchall():
    print(line)

# 关闭游标
cursor.close()

# 关闭连接
conn.close()
create table test(keyId int,info varchar(30))
go
insert into test(keyId,info)values(10,'测试信息20180625-1')
insert into test(keyId,info)values(20,'测试信息20180626-2')
insert into test(keyId,info)values(21,'测试信息20180628-3')
insert into test(keyId,info)values(81,'测试信息20180620-4')
insert into test(keyId,info)values(92,'测试信息20180608-5')
insert into test(keyId,info)values(101,'测试信息20180605-6')
insert into test(keyId,info)values(102,'测试信息20180606-7')
go


declare @tmp varchar(max)
set @tmp ='<table>'
set @tmp =@tmp+'<tr><td>流水号<td>keyId<td>info</tr>'

select 
@tmp=@tmp+'<tr style=''background-color:'+ case when t.[编号] %2=0 then 'blue' else '' end+'''>'
+'<td>'+ convert(varchar(100),t.[编号])
+'<td>'+ convert(varchar(100),t.keyId)
+'<td>'+t.info
+'</tr>'
from 
(
select row_number() over(order by keyId asc ) as [编号],
keyId,info from test ) as t 


set @tmp =@tmp+'</table>'
select @tmp ---打印生成的html信息 

go
drop table test 

2.4 概念表达

 Python 中操作 MySQL 步骤

什么明白连接 connection 和 游标 cursor
connection就像连接出发地和目标地的 高速路cursor就像是在高品级公路上的货车-拉货 大家应用游标就足以变成对数码的操作
当大家做到操作实现后就足以告一段落货车,然后公路再结束使用。

转自:http://www.maomao365.com/?p=6679

4.3 配置schema.xml

pymysql的使用

引进模块

from pymysql import connect

附:Centos6.5下安装mysql

首先步:查看mysql是还是不是安装。

rpm -qa|grep mysql

其次步:要是mysql的版本不是想要的版本。必要把mysql卸载。

yum remove mysql mysql-server mysql-libs mysql-common

rm -rf /var/lib/mysql

rm /etc/my.cnf

其三步:安装mysql。必要使用yum命令安装。在装置mysql在此之前需求设置mysql的下载源。要求从oracle的官方网站下载。

1)下载mysql的源包。

我们是centos6.4对应的rpm包为:mysql-community-release-el6-5.noarch.rpm

2)安装mysql下载源:

yum localinstall mysql-community-release-el6-5.noarch.rpm

(图片 1)此附属类小部件可保存

 图片 2

 

3)在线安装mysql:

yum install mysql-community-server

第四步:启动mysql

service mysqld start

第五步:要求给root顾客安装密码。

/usr/bin/mysqladmin -u root password ‘new-password’  //
为root账号设置密码

第六步:远程连接授权。

GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@’%’ IDENTIFIED BY
‘mypassword’ WITH GRANT
OPTION;

小心:’myuser’、’mypassword’ 供给替换来实际的客户名和密码。

 

 数据库编制程序

在此以前边大家领悟数据库概念富含数据库文件、服务器和数据库顾客端
客商端大家事先早就用过的有navicat/mysql-client等先后。

难题:
怎么样运用客商端将一千00行数据插入到数据库?

世家会发觉只要用事先客商端差没有多少是不恐怕完全这么些职务的,
因为我们不容许去协会出非常插入10w行数据的SQL。不过,假诺我们有三个效果能够插入一行数据,借助程序壮大的风味-重复,就足以唾手可得的就将10w行数据收入麾下。这种通过利用程序代码的艺术去老是数据库服务器,通过和服务器实行交互完结对数据库的增加和删除改查的格局,就叫做数据库编制程序。

而这时读书的pymysql正是一种客商端。

 

Mycat的下载及安装

pymysql完毕对数据库的增删改

import pymysql

conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='mysql',db='python_test_1', charset='utf8')

# 通过连接获取游标
cursor = conn.cursor()


# sql = "delete from hero where id = 5;"
# sql = insert into hero (name) values ('西部大坏蛋孙悟空');
sql = "update hero set kongfuid=444 where id = 4;"

row_count = cursor.execute(sql)
print("SQL语句执行影响的行数%d" % row_count)

# 提交数据到数据库
# conn.commit()

# 回滚数据到什么都不做的状态 即撤销刚刚的修改
conn.rollback()

# 关闭游标和连接
cursor.close()
conn.close()

有关提交commit
commit将修改提交到数据库,保存修改

style=”font-size: 14px”>注意pymysql中数据需求手动提交commit能力保留到数据库中

例:
下文 首先利用 over() row_number 函数生成的行编号,
下一场对每行实行颜色变化操作,生成不一样的背景观,如下所示:

2.1 什么是Mycat?

 

Mycat 背后是Ali已经开源的盛名产品——Cobar。Cobar 的主导作用和优势是 MySQL 数据库分片,此产品已经流传,据书上说最初的发起者对
Mysql 很精晓,后来从Ali跳槽了,阿里跟着开源的
Cobar,并维持到 二〇一一 年年终,然后,就一向不然后了。

Cobar 的思绪和兑现路径的确不易。基于
Java 开荒的,完毕了 MySQL 公开的二进制传输公约,美妙地将团结伪装成三个MySQL Server,前段时间市情上绝大相当多 MySQL 顾客端工具和动用都能相称。比本身实现二个新的数据库合同要明智的多,因为生态意况在哪个地方摆着。

 

Mycat 是依据 cobar 演化而来,对 cobar 的代码进行了根本的重构,使用 NIO 重构了互连网模块,况且优化了 Buffer 内核,加强了聚众,Join 等骨干特征,同不日常间相称绝大好多数据库成为通用的数据库中间件。

轻便易行的说,MyCAT正是:

·贰个时尚的数据库中间件产品帮衬mysql集群,或许mariadb cluster,提供高可用性数据分片集群。你能够像使用mysql同样采用mycat。对于开采职员来讲根本以为不到mycat的存在。

 图片 3

参数化列表制止SQL注入

怎么着是SQL注入 发生原因:
后台将客户提交的含有恶意的数码和SQL举行字符串格局的拼凑,从而影响了SQL语句的语义,最后发生多少走漏的现象。
假使幸免: sql语句的参数化,
将SQL语句的兼具数据参数存在四个列表中传递给execute函数的第二个参数

注意

* 此处不同于python的字符串格式化,必须全部使用%s占位
* 所有参数所需占位符外不需要加引号
from pymysql import connect

def main():

    find_name = input("请输入物品名称:")

    # 创建Connection连接
    conn = connect(host='localhost',port=3306,user='root',password='mysql',database='jing_dong',charset='utf8')
    # 获得Cursor对象
    cs1 = conn.cursor()


    # # 非安全的方式
    # # 输入 " or 1=1 or "   (双引号也要输入)
    # sql = 'select * from goods where name="%s"' % find_name
    # print("""sql===>%s<====""" % sql)
    # # 执行select语句,并返回受影响的行数:查询所有数据
    # count = cs1.execute(sql)

    # 安全的方式
    # 构造参数列表 
    params = [find_name]
    # 执行select语句,并返回受影响的行数:查询所有数据
    count = cs1.execute('select * from goods where name=%s', params)
    # 注意:
    # 如果要是有多个参数,需要进行参数化
    # 那么params = [数值1, 数值2....],此时sql语句中有多个%s即可 

    # 打印受影响的行数
    print(count)
    # 获取查询的结果
    # result = cs1.fetchone()
    result = cs1.fetchall()
    # 打印查询的结果
    print(result)
    # 关闭Cursor对象
    cs1.close()
    # 关闭Connection对象
    conn.close()

if __name__ == '__main__':
    main()

 

5.1 Mysql的主从复制

 

骨干配置须要留心的地点

1、主DB server和从DB server数据库的版本一样

2、主DB server和从DB server数据库数据名称同样

3、主DB server开启二进制日志,主DB
server和从DB server的server_id都不可能不独一

 

Connection 对象

  • 用以创立与数据库的连天
    调用pymysql模块中的connect()方法

conn=connect(参数列表)

* 参数host:连接的mysql主机,如果本机是'localhost'
* 参数port:连接的mysql主机的端口,默认是3306
* 参数database:数据库的名称
* 参数user:连接的用户名
* 参数password:连接的密码
* 参数charset:通信采用的编码方式,推荐使用utf8
  • 闭馆连接 conn.close()

  • 付出数据 conn.commit()

  • 撤废数据 conn.rollback()

  • 通过连接获取游标
    cur = conn.cursor()回到Cursor对象,用于实施sql语句并收获结果

摘要:

4.6.1 创建表

陈设完成后,重新开动mycat。使用mysql顾客端连接mycat,创立表。

-- ----------------------------
-- Table structure for tb_item
-- ----------------------------
DROP TABLE IF EXISTS `tb_item`;
CREATE TABLE `tb_item` (
  `id` bigint(20) NOT NULL COMMENT '商品id,同时也是商品编号',
  `title` varchar(100) NOT NULL COMMENT '商品标题',
  `sell_point` varchar(500) DEFAULT NULL COMMENT '商品卖点',
  `price` bigint(20) NOT NULL COMMENT '商品价格,单位为:分',
  `num` int(10) NOT NULL COMMENT '库存数量',
  `barcode` varchar(30) DEFAULT NULL COMMENT '商品条形码',
  `image` varchar(500) DEFAULT NULL COMMENT '商品图片',
  `cid` bigint(10) NOT NULL COMMENT '所属类目,叶子类目',
  `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '商品状态,1-正常,2-下架,3-删除',
  `created` datetime NOT NULL COMMENT '创建时间',
  `updated` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `cid` (`cid`),
  KEY `status` (`status`),
  KEY `updated` (`updated`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品表';

 

4.6.2 安顿数据 

 

将此文件中的数据插入到数据库:

 图片 4

 

 

 


下文将分享应用sql脚本输出交替转变的不如背景颜色的sql脚本的主意分享,如下所示:
实验蒙受:sqlserver 2010 大切诺基2

4.6.3 分片测量试验

鉴于配备的分片准则为“auto-sharding-long”,所以mycat会依照此准则自动分片。

各样datanode中保留一定数额的数量。依据id实行分片

经测试id范围为:

Datanode1:1~5000000

Datanode2:5000000~10000000

Datanode3:10000001~15000000

 

当15000000之上的id插入时报错:

[Err] 1064 – can’t find any valid datanode :TB_ITEM -> ID ->
15000001

这时候亟待增添节点了。

 

Cursor游标对象

  • 获取Cursor对象

      # 调用Connection对象的cursor()方法    
      cur =conn.cursor()
    

目标:
施行sql语句(使用频度最高的讲话为select、insert、update、delete)

  • 动用游标实施SQL语句

execute(operation [, parameters ])
实践SQL语句,重回受影响的行数,主要用来推行insert、update、delete语句,也得以举行create、alter、drop等语句

  • 关门游标 cur.close()

  • 取得结果聚焦的一条

    cur.fetchone()回来多少个元组 形如
    (1,’己妲’,18)

  • 获取结果聚焦的富有

    cur.fetchall()奉行查询时,获取结果集的有着行,一行构成八个元组,再将那些元组装入二个元组重回形如((1,’公孙离’,20),(2,’苏妲己’,18))

3.2 设置步骤

Mycat有windows、linux多样版本。本学科为linux安装步骤,windows基本同样。

第一步:下载Mycat-server-xxxx-linux.tar.gz

其次步:将核减包解压缩。提出将mycat放到/usr/local/mycat目录下。

第三步:进入mycat目录,启动mycat

./mycat start

停止:

./mycat stop

mycat 协理的指令{ console | start | stop | restart | status
| dump }

Mycat的私下认可端口号为:8066

4.3.1 Schema.xml介绍

Schema.xml作为MyCat中任重(英文名:rèn zhòng)而道远的布署文件之一,管理着MyCat的逻辑库、表、分片准绳、DataNode以及DataSource。弄懂那么些配置,是金科玉律利用MyCat的前提。这里就一偶发对该文件进行深入分析。

 

schema 标签用于定义MyCat实例中的逻辑库

Table 标签订义了MyCat中的逻辑表

dataNode 标签订义了MyCat中的数据节点,也正是大家普通说所的数量分片。

dataHost标签在mycat逻辑库中也是当做最尾部的标签存在,直接定义了现实的数据库实例、读写分离配置和心跳语句。

 

注意:若是LINUX版本的MYSQL,则需要设置为Mysql大小写不敏感,否则可能会发生表找不到的问题。

在MySQL的配置文件中/etc/my.cnf [mysqld] 中增加一行

  lower_case_table_names=1

 

2.2 Mycat匡助的数据库

 图片 5

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图