zoukankan      html  css  js  c++  java
  • Python远程连接MySQL数据库

    使用Python连接数据库首先需要安装Python的数据库驱动。
    我的本地只装了Python,并没有装MySQL,当我使用命令:

    sudo pip install mysql-python
    

    安装驱动(也就是MySQLdb模块)的时候出现如下错误:

    EnvironmentError: mysql_config not found
    

    资料 知道是因为没有安装下面两开发包:
    libmysqld-dev
    libmysqlclient-dev
    安装:

    sudo apt install libmysqld-dev
    

    事实上用apt安装第一个之后,第二个也已经存在了。再次尝试安装mysql-python就成功了。
    现在尝试远程连接数据:

    import MySQLdb
    
    conn = MySQLdb.connect(host = '×××××××××××××',  # 远程主机的ip地址, 
                                                user = 'root',   # MySQL用户名
                                                db = 'alimusic',   # database名
                                                passwd = '××××××',   # 数据库密码
                                                port = 3306,  #数据库监听端口,默认3306
                                                charset = "utf8")  #指定utf8编码的连接
    cursor = conn.cursor()  # 创建一个光标,然后通过光标执行sql语句
    cursor.excute("select * from table1 limit 10")
    values = cursor.fetchall()  # 取出cursor得到的数据
    cursor.close(); conn.close()  #最后记得关闭光标和连接,防止数据泄露
    

    如果excute()执行的是插入数据的代码,那么在执行完成之后需要调用

    cursor.commit()
    

    才能把结果写入数据库

    中文乱码

    编码错误在任何时候都必须重视的问题,由于连接数据库涉及到多个层次,比如数据库服务器编码,创建的database编码,table的编码,连接(也就是上面的conn)编码。如果出现乱码,需要检查上述的每一个环节。这里记录几个查询各种编码的方式:

    • 查询数据库的各种编码:
    show variables like "%char%";
    
    • 查询某个数据库的默认编码
    show create database databasename;
    
    • 查询某张表的默认编码
    show create table tablename;
    

    最好在create数据库或者表的时候在创建语句后面指定具体的编码方式:default character set utf8

    参考资料

  • 相关阅读:
    OPC UA认识汇总
    linux内核铁三角-进程(任务)调度
    nginx配置文件
    git和coding的使用
    php处理mysql的结果集
    php中self和$this还有parent的区别
    Mysql练习题
    SEO优化
    css3 旋转 八仙桌
    laravel笔记
  • 原文地址:https://www.cnblogs.com/mooba/p/6484357.html
Copyright © 2011-2022 走看看