• Python操作远程数据库


    我的项目要往数据库中插入create_time和update_time,那就势必要引用现在的系统时间,经过大量的查找,终于发现往python是没有对应时间datetime的相关通配符的,那么我们要怎么实现呢。

    其实很简单,我们只需要把datetime转换成字符串类型的就行

        def insertIntoChannel(self, user):  
                conn = JDBCUtils.getConnection()  
                cursor = conn.cursor()  
                dt=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")  
                cursor.execute("insert into user(id,age,name,create_time,update_time)   
                              values('%d','%d','%s','%s','%s')" %   
                               (user.getId(),user.getAge(), user.getName(),dt,dt))  
                cursor.close()  
                conn.commit()  
                conn.close()  
    

    时间间隔

    import time
    def sleeptime(hour,min,sec):
        return hour*3600 + min*60 + sec;
    second = sleeptime(0,0,20);
    while 1==1:
        time.sleep(second);
        print 'do action'
    #这是隔20秒执行一次
    ;
    

    另外操作远程数据库需要远程数据库对本地进行授权:

    若没有授权会出现以下提示

    ERROR 1130: Host 192.168.3.100 is not allowed to connect to this MySQL server 
    

    在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%'。

    mysql -u root -p
    mysql>use mysql;
    mysql>select 'host' from user where user='root';
    mysql>update user set host = '%' where user ='root';
    mysql>flush privileges;
    mysql>select 'host'   from user where user='root'; 
    

    第一句是以权限用户root登录

    第二句:选择mysql库

    第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)

    第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址

    第五句:刷新MySQL的系统权限相关表

    第六句:再重新查看user表时,有修改。。

    记得Mysql服务需要重新启动(确保修改有效),否则可能修改的结果无法体现。

    注意:修改过后本地root账户无法连接数据库

    phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接。您应该检查配置文件中的主机、用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致。
    

    仍然使用root账户登陆,密码为空。删除root用户再创建并授权。

    mysql -u root -p
    drop user 'root'@'localhost'
    create user 'root'@'localhost' identified by '你的密码';
    grant all privileges on *.* to root@'localhost';
    

    另外:可以创建远程登陆用户并授权

    grant all PRIVILEGES on test_db.* to root@'192.168.1.101'  identified by '23455';
    flush privileges; 
    

    all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。

    test_db.* 表示上面的权限是针对于哪个表的,test_db指的是数据库,后面的 * 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。

    root 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。

    192.168.1.101   表示允许远程连接的 IP 地址,也就是你本地的ip地址。如果想不限制链接的 IP 则设置为“%”即可。

    123456 为用户的密码。

    ERROR : (2006, 'MySQL server has gone away')
    

    问题分析:client和MySQL server之间的链接断开了。

    造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert ... values的语句过长, 这种情况可以通过修改max_allowed_packed的配置参数来避免,也可以在程序中将数据分批插入)。

  • 相关阅读:
    系统消息系统公告数据建模
    Chrome部分站点无法启用Flash问题
    使用netstat命令查看端口的使用情况
    Jave基本数据类型
    Mac下Tomcat安装&配置&80默认端口设置
    React学习及实例开发(一)——开始(转载)
    jQuery、layer实现弹出层的打开、关闭功能实例详解
    jQuery获取节点和子节点文本的方法
    jquery 获取$("#id").text()里面的值 需要进行去空格去换行符操作
    ES6数组新增的几个方法
  • 原文地址:https://www.cnblogs.com/sirius-swu/p/6838408.html
Copyright © 2020-2023  润新知