示例#1
0
def mysql_dsn(conf):
    """MySQL server dsn
    """
    dsn = conf["mysql_dsn"] if conf else "mysql+pymysql://root@localhost/"

    # init database

    parsed = urlparse(dsn)
    db_settings = {
        "host": parsed.hostname,
        "port": parsed.port or 3306,
        "user": parsed.username,
        "passwd": parsed.password
    }
    conn = pymysql.connect(**db_settings)

    cursor = conn.cursor()
    sql = """
    DROP DATABASE IF EXISTS meepo_test;
    CREATE DATABASE meepo_test;
    CREATE TABLE meepo_test.test (
        id INT NOT NULL AUTO_INCREMENT,
        data VARCHAR (256) NOT NULL,
        PRIMARY KEY (id)
    );
    RESET MASTER;
    """
    cursor.execute(sql)
    print("executed")

    # release conn
    conn.close()

    return dsn
示例#2
0
def binlog(mysql_dsn):
    # init mysql connection
    parsed = urlparse(mysql_dsn)
    db_settings = {
        "host": parsed.hostname,
        "port": parsed.port or 3306,
        "user": parsed.username,
        "passwd": parsed.password,
        "database": "meepo_test"
    }
    conn = pymysql.connect(**db_settings)
    cursor = conn.cursor()

    # test sqls
    sql = """
    INSERT INTO test (data) VALUES ('a');
    INSERT INTO test (data) VALUES ('b'), ('c'), ('d');
    UPDATE test SET data = 'aa' WHERE id = 1;
    UPDATE test SET data = 'bb' WHERE id = 2;
    UPDATE test SET data = 'cc' WHERE id != 1;
    DELETE FROM test WHERE id != 1;
    DELETE FROM test WHERE id = 1;
    """
    cursor.execute(sql)
    cursor.close()
    conn.commit()
    conn.close()

    # generates signals
    mysql_pub(mysql_dsn, tables=["test"])
示例#3
0
def test_mysql_pub(mysql_dsn):
    test_write_sig, test_update_sig, test_delete_sig = [], [], []
    test_binlog_sig = []

    signal("test_write").connect(lambda pk: test_write_sig.append(pk),
                                 weak=False)
    signal("test_update").connect(lambda pk: test_update_sig.append(pk),
                                  weak=False)
    signal("test_delete").connect(lambda pk: test_delete_sig.append(pk),
                                  weak=False)
    signal("mysql_binlog_pos").connect(lambda pk: test_binlog_sig.append(pk),
                                       weak=False)

    parsed = urlparse(mysql_dsn)
    db_settings = {
        "host": parsed.hostname,
        "port": parsed.port or 3306,
        "user": parsed.username,
        "passwd": parsed.password,
        "database": "meepo_test"
    }
    conn = pymysql.connect(**db_settings)
    cursor = conn.cursor()

    # test sqls
    sql = """
    INSERT INTO test (data) VALUES ('a');
    INSERT INTO test (data) VALUES ('b'), ('c'), ('d');
    UPDATE test SET data = 'aa' WHERE id = 1;
    UPDATE test SET data = 'bb' WHERE id = 2;
    UPDATE test SET data = 'cc' WHERE id != 1;
    DELETE FROM test WHERE id != 1;
    DELETE FROM test WHERE id = 1;
    """
    cursor.execute(sql)
    cursor.close()
    conn.commit()
    conn.close()

    from meepo.pub import mysql_pub
    mysql_pub(mysql_dsn, tables=["test"])

    assert test_write_sig == [1, 2, 3, 4]
    assert test_update_sig == [1, 2, 2, 3, 4]
    assert test_delete_sig == [2, 3, 4, 1]
    assert len(test_binlog_sig) == 7
示例#4
0
文件: mysql_demo.py 项目: amumu/meepo
def db_prepare(dsn):
    parsed = urlparse(dsn)
    db_settings = {
        "host": parsed.hostname,
        "port": parsed.port or 3306,
        "user": parsed.username,
        "passwd": parsed.password
    }
    conn = pymysql.connect(**db_settings)

    cursor = conn.cursor()
    sql = """
    DROP DATABASE IF EXISTS meepo_test;
    CREATE DATABASE meepo_test;
    DROP TABLE IF EXISTS meepo_test.test;
    CREATE TABLE meepo_test.test (
        id INT NOT NULL AUTO_INCREMENT,
        data VARCHAR (256) NOT NULL,
        PRIMARY KEY (id)
    );
    RESET MASTER;
    """
    cursor.execute(sql)
    logger.info("table created.")

    # genereate binlog
    sql = """
    INSERT INTO test (data) VALUES ('a');
    INSERT INTO test (data) VALUES ('b'), ('c'), ('d');
    UPDATE test SET data = 'aa' WHERE id = 1;
    UPDATE test SET data = 'bb' WHERE id = 2;
    UPDATE test SET data = 'cc' WHERE id != 1;
    DELETE FROM test WHERE id != 1;
    DELETE FROM test WHERE id = 1;
    """
    cursor.execute(sql)
    cursor.close()
    conn.commit()
    conn.close()
    logger.info("binlog created.")
示例#5
0
def mysql_dsn(conf):
    """MySQL server dsn

    This fixture will init a clean meepo_test database with a 'test' table
    """
    logger = logging.getLogger("fixture_mysql_dsn")

    dsn = conf["mysql_dsn"] if conf else \
        "mysql+pymysql://root@localhost/meepo_test"

    # init database
    parsed = urlparse(dsn)
    db_settings = {
        "host": parsed.hostname,
        "port": parsed.port or 3306,
        "user": parsed.username,
        "passwd": parsed.password
    }
    conn = pymysql.connect(**db_settings)

    cursor = conn.cursor()
    sql = """
    DROP DATABASE IF EXISTS meepo_test;
    CREATE DATABASE meepo_test;
    DROP TABLE IF EXISTS meepo_test.test;
    CREATE TABLE meepo_test.test (
        id INT NOT NULL AUTO_INCREMENT,
        data VARCHAR (256) NOT NULL,
        PRIMARY KEY (id)
    );
    RESET MASTER;
    """
    cursor.execute(sql)
    logger.debug("executed")

    # release conn
    cursor.close()
    conn.close()

    return dsn
示例#6
0
def db_prepare(dsn):
    parsed = urlparse(dsn)
    db_settings = {
        "host": parsed.hostname,
        "port": parsed.port or 3306,
        "user": parsed.username,
        "passwd": parsed.password
    }
    conn = pymysql.connect(**db_settings)

    cursor = conn.cursor()
    sql = """
    DROP DATABASE IF EXISTS meepo_test;
    CREATE DATABASE meepo_test;
    DROP TABLE IF EXISTS meepo_test.test;
    CREATE TABLE meepo_test.test (
        id INT NOT NULL AUTO_INCREMENT,
        data VARCHAR (256) NOT NULL,
        PRIMARY KEY (id)
    );
    RESET MASTER;
    """
    cursor.execute(sql)
    logger.info("table created.")

    # genereate binlog
    sql = """
    INSERT INTO test (data) VALUES ('a');
    INSERT INTO test (data) VALUES ('b'), ('c'), ('d');
    UPDATE test SET data = 'aa' WHERE id = 1;
    UPDATE test SET data = 'bb' WHERE id = 2;
    UPDATE test SET data = 'cc' WHERE id != 1;
    DELETE FROM test WHERE id != 1;
    DELETE FROM test WHERE id = 1;
    """
    cursor.execute(sql)
    cursor.close()
    conn.commit()
    conn.close()
    logger.info("binlog created.")