首页 > 代码库 > Python操作远程数据库

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的配置参数来避免,也可以在程序中将数据分批插入)。

Python操作远程数据库