HBase实战(1):使用Python连接Hbase数据库【未测试】 - Go语言中文社区

HBase实战(1):使用Python连接Hbase数据库【未测试】


使用Python连接Hbase数据库

1,Hbase下载。

下载地址:http://hbase.apache.org/downloads.html

2,本地Hbase安装

root@master:/usr/local/setup_tools# tar -zxvf hbase-2.0.0-bin.tar.gz

    root@master:/usr/local/setup_tools# mv hbase-2.0.0 /usr/local/
    root@master:/usr/local/setup_tools# cd /usr/local
    root@master:/usr/local# ls | grep hbase
    hbase-2.0.0
    root@master:/usr/local#

    root@master:/usr/local/hbase-2.0.0# vi /etc/profile
    export HBASE_HOME=/usr/local/hbase-2.0.0
     
    export PATH=.:$PATH:$JAVA_HOME/bin:$SCALA_HOME/bin:$HADOOP_HOME/bin:$SPARK_HOME/bin:$HIVE_HOME/bin:$FLUME_HOME/bin:$ZOOKEEPER_HOME/bin:$KAFKA_HOME/bin:$IDEA_HOME/bin:$eclipse_HOME:$MAVEN_HOME/bin:$ALLUXIO_HOME/bin:$HBASE_HOME/bin

root@master:/usr/local/hbase-2.0.0# source /etc/profile


3,配置

 修改hbase-site.xml,设置存储数据的根目录。

root@master:/usr/local/hbase-2.0.0/conf# vi hbase-site.xml

    <configuration>
        <property>
            <name>hbase.rootdir</name>
            <value>file:///usr/local/hbase-2.0.0/data</value>
        </property>
     
    </configuration>

4,启动hbase

    root@master:/usr/local/hbase-2.0.0# cd bin
    root@master:/usr/local/hbase-2.0.0/bin# ls
    considerAsDead.sh     hbase             hbase-config.cmd  hbase-jruby             master-backup.sh  replication               start-hbase.sh  zookeepers.sh
    draining_servers.rb   hbase-cleanup.sh  hbase-config.sh   hirb.rb                 region_mover.rb   rolling-restart.sh        stop-hbase.cmd
    get-active-master.rb  hbase.cmd         hbase-daemon.sh   local-master-backup.sh  regionservers.sh  shutdown_regionserver.rb  stop-hbase.sh
    graceful_stop.sh      hbase-common.sh   hbase-daemons.sh  local-regionservers.sh  region_status.rb  start-hbase.cmd           test
    root@master:/usr/local/hbase-2.0.0/bin# start-hbase.sh
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/usr/local/hbase-2.0.0/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/usr/local/hadoop-2.6.0/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/usr/local/alluxio-1.7.0-hadoop-2.6/client/alluxio-1.7.0-client.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
    running master, logging to /usr/local/hbase-2.0.0/logs/hbase-root-master-master.out
    root@master:/usr/local/hbase-2.0.0/bin# jps
    2757 Jps
    2685 HMaster

5,使用hbase shell

    root@master:/usr/local/hbase-2.0.0/bin#  hbase shell
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/usr/local/hbase-2.0.0/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/usr/local/hadoop-2.6.0/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/usr/local/alluxio-1.7.0-hadoop-2.6/client/alluxio-1.7.0-client.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
    HBase Shell
    Use "help" to get list of supported commands.
    Use "exit" to quit this interactive shell.
    Version 2.0.0, r7483b111e4da77adbfc8062b3b22cbe7c2cb91c1, Sun Apr 22 20:26:55 PDT 2018
    Took 0.0044 seconds                                                                                                                                                    
    hbase(main):001:0>


    hbase(main):003:0> version
    2.0.0, r7483b111e4da77adbfc8062b3b22cbe7c2cb91c1, Sun Apr 22 20:26:55 PDT 2018
    Took 0.0054 seconds                                                                                                                                                    
    hbase(main):004:0>

启动hbase thrift服务。

    root@master:/usr/local/hbase-2.0.0/bin# hbase-daemon.sh start thrift
    running thrift, logging to /usr/local/hbase-2.0.0/logs/hbase-root-thrift-master.out
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/usr/local/hbase-2.0.0/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/usr/local/hadoop-2.6.0/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/usr/local/alluxio-1.7.0-hadoop-2.6/client/alluxio-1.7.0-client.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    root@master:/usr/local/hbase-2.0.0/bin# jps
    3332 Jps
    3254 ThriftServer
    2685 HMaster
    root@master:/usr/local/hbase-2.0.0/bin#


二,使用Python连接Hbase。

1,建立Python开发环境 ---虚拟环境。

          先进行检查。

    root@master:/usr/local/hbase-2.0.0/bin# pip
    The program 'pip' is currently not installed. You can install it by typing:
    apt-get install python-pip
    root@master:/usr/local/hbase-2.0.0/bin# python
    Python 2.7.6 (default, Mar 22 2014, 22:59:56)
    [GCC 4.8.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> exit()
    root@master:/usr/local/hbase-2.0.0/bin#

    安装pip。

    root@master:/usr/local/hbase-2.0.0/bin# apt-get install python-pip
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following packages were automatically installed and are no longer required:
      diffstat hardening-includes libapt-pkg-perl libarchive-zip-perl
      libautodie-perl libclass-accessor-perl libemail-valid-perl libio-pty-perl
      libio-string-perl libipc-run-perl libipc-system-simple-perl
      liblist-moreutils-perl libnet-dns-perl libnet-domain-tld-perl libnet-ip-perl
      libparse-debianchangelog-perl libperlio-gzip-perl libsub-identify-perl
      libsub-name-perl libtext-levenshtein-perl patchutils t1utils
    Use 'apt-get autoremove' to remove them.
    The following extra packages will be installed:
      python-chardet-whl python-colorama python-colorama-whl python-distlib
      python-distlib-whl python-html5lib python-html5lib-whl python-pip-whl
      python-pkg-resources python-requests-whl python-setuptools
      python-setuptools-whl python-six-whl python-urllib3-whl python-wheel
    Suggested packages:
      python-genshi python-distribute python-distribute-doc
    Recommended packages:
      python-dev-all
    The following NEW packages will be installed:
      python-chardet-whl python-colorama python-colorama-whl python-distlib
      python-distlib-whl python-html5lib python-html5lib-whl python-pip
      python-pip-whl python-requests-whl python-setuptools python-setuptools-whl
      python-six-whl python-urllib3-whl python-wheel
    The following packages will be upgraded:
      python-pkg-resources
    1 upgraded, 15 newly installed, 0 to remove and 637 not upgraded.
    Need to get 1,744 kB of archives.
    After this operation, 4,184 kB of additional disk space will be used.
    Do you want to continue? [Y/n] y
    Get:1 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/universe python-chardet-whl all 2.2.1-2~ubuntu1 [170 kB]
    Get:2 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/universe python-chardet-whl all 2.2.1-2~ubuntu1 [170 kB]
    1% [2 python-chardet-whl 14.0 kB/170 kB 8%]                                    
    Get:3 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/universe python-chardet-whl all 2.2.1-2~ubuntu1 [170 kB]
    Get:4 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/universe python-chardet-whl all 2.2.1-2~ubuntu1 [170 kB]
    2% [4 python-chardet-whl 38.1 kB/170 kB 22%]                                   
    6% [4 python-chardet-whl 99.9 kB/170 kB 59%]                                   
    Get:5 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/universe python-colorama all 0.2.5-0.1ubuntu2 [18.4 kB]
    Get:6 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/universe python-colorama-whl all 0.2.5-0.1ubuntu2 [18.2 kB]
    Get:7 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/universe python-distlib all 0.1.8-1ubuntu1 [113 kB]
    Get:8 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/universe python-distlib-whl all 0.1.8-1ubuntu1 [140 kB]
    Get:9 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main python-html5lib all 0.999-3~ubuntu1 [83.5 kB]
    Get:10 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main python-html5lib-whl all 0.999-3~ubuntu1 [109 kB]
    Get:11 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main python-six-whl all 1.5.2-1ubuntu1 [10.5 kB]
    Get:12 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main python-urllib3-whl all 1.7.1-1ubuntu4 [64.0 kB]
    Get:13 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main python-requests-whl all 2.2.1-1ubuntu0.3 [227 kB]
    Get:14 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main python-setuptools-whl all 3.3-1ubuntu2 [244 kB]
    Get:15 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/universe python-pip-whl all 1.5.4-1ubuntu4 [111 kB]
    Get:16 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main python-pkg-resources all 3.3-1ubuntu2 [61.9 kB]
    Get:17 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main python-setuptools all 3.3-1ubuntu2 [230 kB]
    Get:18 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/universe python-pip all 1.5.4-1ubuntu4 [97.3 kB]
    Get:19 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main python-wheel all 0.24.0-1~ubuntu1 [44.7 kB]
    Fetched 1,723 kB in 9min 30s (3,019 B/s)                                       
    Selecting previously unselected package python-chardet-whl.
    (Reading database ... 156494 files and directories currently installed.)
    Preparing to unpack .../python-chardet-whl_2.2.1-2~ubuntu1_all.deb ...
    Unpacking python-chardet-whl (2.2.1-2~ubuntu1) ...
    Selecting previously unselected package python-colorama.
    Preparing to unpack .../python-colorama_0.2.5-0.1ubuntu2_all.deb ...
    Unpacking python-colorama (0.2.5-0.1ubuntu2) ...
    Selecting previously unselected package python-colorama-whl.
    Preparing to unpack .../python-colorama-whl_0.2.5-0.1ubuntu2_all.deb ...
    Unpacking python-colorama-whl (0.2.5-0.1ubuntu2) ...
    Selecting previously unselected package python-distlib.
    Preparing to unpack .../python-distlib_0.1.8-1ubuntu1_all.deb ...
    Unpacking python-distlib (0.1.8-1ubuntu1) ...
    Selecting previously unselected package python-distlib-whl.
    Preparing to unpack .../python-distlib-whl_0.1.8-1ubuntu1_all.deb ...
    Unpacking python-distlib-whl (0.1.8-1ubuntu1) ...
    Selecting previously unselected package python-html5lib.
    Preparing to unpack .../python-html5lib_0.999-3~ubuntu1_all.deb ...
    Unpacking python-html5lib (0.999-3~ubuntu1) ...
    Selecting previously unselected package python-html5lib-whl.
    Preparing to unpack .../python-html5lib-whl_0.999-3~ubuntu1_all.deb ...
    Unpacking python-html5lib-whl (0.999-3~ubuntu1) ...
    Selecting previously unselected package python-six-whl.
    Preparing to unpack .../python-six-whl_1.5.2-1ubuntu1_all.deb ...
    Unpacking python-six-whl (1.5.2-1ubuntu1) ...
    Selecting previously unselected package python-urllib3-whl.
    Preparing to unpack .../python-urllib3-whl_1.7.1-1ubuntu4_all.deb ...
    Unpacking python-urllib3-whl (1.7.1-1ubuntu4) ...
    Selecting previously unselected package python-requests-whl.
    Preparing to unpack .../python-requests-whl_2.2.1-1ubuntu0.3_all.deb ...
    Unpacking python-requests-whl (2.2.1-1ubuntu0.3) ...
    Selecting previously unselected package python-setuptools-whl.
    Preparing to unpack .../python-setuptools-whl_3.3-1ubuntu2_all.deb ...
    Unpacking python-setuptools-whl (3.3-1ubuntu2) ...
    Selecting previously unselected package python-pip-whl.
    Preparing to unpack .../python-pip-whl_1.5.4-1ubuntu4_all.deb ...
    Unpacking python-pip-whl (1.5.4-1ubuntu4) ...
    Preparing to unpack .../python-pkg-resources_3.3-1ubuntu2_all.deb ...
    Unpacking python-pkg-resources (3.3-1ubuntu2) over (3.3-1ubuntu1) ...
    Selecting previously unselected package python-setuptools.
    Preparing to unpack .../python-setuptools_3.3-1ubuntu2_all.deb ...
    Unpacking python-setuptools (3.3-1ubuntu2) ...
    Selecting previously unselected package python-pip.
    Preparing to unpack .../python-pip_1.5.4-1ubuntu4_all.deb ...
    Unpacking python-pip (1.5.4-1ubuntu4) ...
    Selecting previously unselected package python-wheel.
    Preparing to unpack .../python-wheel_0.24.0-1~ubuntu1_all.deb ...
    Unpacking python-wheel (0.24.0-1~ubuntu1) ...
    Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
    Setting up python-chardet-whl (2.2.1-2~ubuntu1) ...
    Setting up python-colorama (0.2.5-0.1ubuntu2) ...
    Setting up python-colorama-whl (0.2.5-0.1ubuntu2) ...
    Setting up python-distlib (0.1.8-1ubuntu1) ...
    Setting up python-distlib-whl (0.1.8-1ubuntu1) ...
    Setting up python-html5lib (0.999-3~ubuntu1) ...
    Setting up python-html5lib-whl (0.999-3~ubuntu1) ...
    Setting up python-six-whl (1.5.2-1ubuntu1) ...
    Setting up python-urllib3-whl (1.7.1-1ubuntu4) ...
    Setting up python-requests-whl (2.2.1-1ubuntu0.3) ...
    Setting up python-setuptools-whl (3.3-1ubuntu2) ...
    Setting up python-pip-whl (1.5.4-1ubuntu4) ...
    Setting up python-pkg-resources (3.3-1ubuntu2) ...
    Setting up python-setuptools (3.3-1ubuntu2) ...
    Setting up python-pip (1.5.4-1ubuntu4) ...
    Setting up python-wheel (0.24.0-1~ubuntu1) ...
    root@master:/usr/local/hbase-2.0.0/bin#

 Pip安装好之后,安装virtualenv软件,让操作系统支持虚拟环境,可以得到命令virtualenv或者pyvenv命令。

    root@master:/usr/local/hbase-2.0.0/bin# pip install virtualenv
    Downloading/unpacking virtualenv
      Downloading virtualenv-16.0.0-py2.py3-none-any.whl (1.9MB): 1.9MB downloaded
    Installing collected packages: virtualenv
    Successfully installed virtualenv
    Cleaning up...
    root@master:/usr/local/hbase-2.0.0/bin#

创建虚拟环境

    root@master:/usr/local# mkdir myPythonEnv
    root@master:/usr/local# cd myPythonEnv
    root@master:/usr/local/myPythonEnv# pwd
    /usr/local/myPythonEnv
    root@master:/usr/local/myPythonEnv# Pyvenv project-env
    Pyvenv: command not found
    root@master:/usr/local/myPythonEnv# virtualenv  project-env
    New python executable in /usr/local/myPythonEnv/project-env/bin/python
    Installing setuptools, pip, wheel...done.
    root@master:/usr/local/myPythonEnv#

进入虚拟环境:

    root@master:/usr/local/myPythonEnv/project-env/bin# source /usr/local/myPythonEnv/project-env/bin/activate
    (project-env) root@master:/usr/local/myPythonEnv/project-env/bin#

安装Thrift依赖包

    (project-env) root@master:/usr/local/myPythonEnv/project-env/bin#  pip install thrift
    Collecting thrift
    /usr/local/myPythonEnv/project-env/local/lib/python2.7/site-packages/pip/_vendor/urllib3/util/ssl_.py:339: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
      SNIMissingWarning
    /usr/local/myPythonEnv/project-env/local/lib/python2.7/site-packages/pip/_vendor/urllib3/util/ssl_.py:137: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
      InsecurePlatformWarning
    /usr/local/myPythonEnv/project-env/local/lib/python2.7/site-packages/pip/_vendor/urllib3/util/ssl_.py:137: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
      InsecurePlatformWarning
      Downloading https://files.pythonhosted.org/packages/c6/b4/510617906f8e0c5660e7d96fbc5585113f83ad547a3989b80297ac72a74c/thrift-0.11.0.tar.gz (52kB)
        100% |████████████████████████████████| 61kB 22kB/s
    Collecting six>=1.7.2 (from thrift)
      Downloading https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
    Building wheels for collected packages: thrift
      Running setup.py bdist_wheel for thrift ... done
      Stored in directory: /root/.cache/pip/wheels/be/36/81/0f93ba89a1cb7887c91937948519840a72c0ffdd57cac0ae8f
    Successfully built thrift
    Installing collected packages: six, thrift
    Successfully installed six-1.11.0 thrift-0.11.0

安装hbase-thrift依赖包

    (project-env) root@master:/usr/local/myPythonEnv/project-env/bin#  pip install hbase-thrift
    Collecting hbase-thrift
    /usr/local/myPythonEnv/project-env/local/lib/python2.7/site-packages/pip/_vendor/urllib3/util/ssl_.py:339: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
      SNIMissingWarning
    /usr/local/myPythonEnv/project-env/local/lib/python2.7/site-packages/pip/_vendor/urllib3/util/ssl_.py:137: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
      InsecurePlatformWarning
    /usr/local/myPythonEnv/project-env/local/lib/python2.7/site-packages/pip/_vendor/urllib3/util/ssl_.py:137: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
      InsecurePlatformWarning
      Downloading https://files.pythonhosted.org/packages/89/f7/dbb6c764bb909ed361c255828701228d8c9867d541cfef84127e6f3704cc/hbase-thrift-0.20.4.tar.gz
    Requirement already satisfied: Thrift in /usr/local/myPythonEnv/project-env/lib/python2.7/site-packages (from hbase-thrift) (0.11.0)
    Requirement already satisfied: six>=1.7.2 in /usr/local/myPythonEnv/project-env/lib/python2.7/site-packages (from Thrift->hbase-thrift) (1.11.0)
    Building wheels for collected packages: hbase-thrift
      Running setup.py bdist_wheel for hbase-thrift ... done
      Stored in directory: /root/.cache/pip/wheels/fe/51/f2/afb7b010cd97910aa0b651d492735a38ed69a93a817444904e
    Successfully built hbase-thrift
    Installing collected packages: hbase-thrift
    Successfully installed hbase-thrift-0.20.4
    (project-env) root@master:/usr/local/myPythonEnv/project-env/bin#

Python连接HBASE的测试程序

    (project-env) root@master:/usr/local/noc_python_201806# vi queryTest.py
     
    from thrift import Thrift
    from thrift.transport import TSocket
    from thrift.transport import TTransport
    from thrift.protocol import TBinaryProtocol
     
    from hbase import Hbase
    from hbase.ttypes import *
     
    transport = TSocket.TSocket('localhost', 9090)
     
    transport = TTransport.TBufferedTransport(transport)
    protocol = TBinaryProtocol.TBinaryProtocol(transport)
     
    client = Hbase.Client(protocol)
    transport.open()
    print client.getTableNames()

运行结果为,查询出表:

    (project-env) root@master:/usr/local/noc_python_201806# python queryTest.py
    ['test', 'testHbase']
    (project-env) root@master:/usr/local/noc_python_201806#

Hbase中的表

    hbase(main):025:0> list
    TABLE                                                                                                                                                                  
    test                                                                                                                                                                   
    testHbase                                                                                                                                                              
    2 row(s)
    Took 0.0188 seconds                                                                                                                                                    
    => ["test", "testHbase"]
    hbase(main):026:0>

至此,Python连接Hbase已经成功!
---------------------
作者:段智华
来源:CSDN
原文:https://blog.csdn.net/duan_zhihua/article/details/80622166
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://my.oschina.net/u/3371661/blog/2872071

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_34014277/article/details/92385292
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 23:14:09
  • 阅读 ( 1098 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢