首页 > 代码库 > 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操作远程数据库