11-21

念念不忘 必有回响

利用python 连接数据库

import pymysql
import pandas as pd
In [4]:
conn=pymysql.Connect("192.168.1.8","root","Password","mysqljingjie",charset="utf8")
conn #建立连接,连接之后打印conn'查看是否连接成功
Out[4]:
<pymysql.connections.Connection at 0x1deef01c4e0>
 

注:在初次连接数据库时失败,显示1061错误,判定是数据库没有连接权限导致的,在mysql本机进行如下操作后,重启mysql服务,连接成功

 

如果想让192.168.10.83能够连接到本地的这个数据库,要让数据库给其分配权限,登录mysql,执行:(username 和 password是登录mysql的用户名和密码)

GRANT ALL PRIVILEGES ON . TO '账户名'@'192.168.10.83' IDENTIFIED BY 'password' WITH GRANT OPTION;

如果要想所有的外部ip地址都能够访问使用mysql,可以执行下面: GRANT ALL PRIVILEGES ON . TO '账户名'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

In [5]:
cur=conn.cursor()#创建游标
In [6]:
cur.execute("select*from employee")#执行sql语句
Out[6]:
8
In [7]:
#cur.fetchone()#返回一条结果
#cur.fetchmany()#返回指定条数
ser=cur.fetchall()#返回所有元组
In [8]:
columnDes = cur.description#获取描述信息
In [11]:
columnNames = [columnDes[i][0] for i in range(len(columnDes))]#获取列名称
df = pd.DataFrame([list(i) for i in ser],columns=columnNames)
df
Out[11]:
 empidname1gendertitlebirthdaydepid
0 1001 张三 高级工程师 1980-01-01 1111
1 1002 李四 工程师 1980-11-01 1111
2 1003 王五 工程师 1980-01-21 2222
3 1004 赵六 工程师 1980-01-11 2222
4 1005 张三 高级工程师 1980-01-01 1111
5 1006 李四 助理工程师 1980-11-01 1111
6 1007 王五 工程师 1980-01-21 2222
7 1008 赵六 工程师 1980-01-11 2222
In [136]:
conn.close()#关闭连接,否者浪费资源
插入新内容
In [123]:
#sql="""insert into bank(b_id,bank_name)
 ,values("B0005","成都银行")"""

 

In [126]:
conn=pymysql.Connect("192.168.1.8","root","password","mysqljingjie",charset="utf8")
cur=conn.cursor()
cur.execute(sql)
conn.commit()#提交事务
# 发生错误时回滚
conn.rollback()
conn.close()

In [127]:

ser
Out[127]:
(('1001', '张三', '男', '高级工程师', datetime.date(1980, 1, 1), '1111'),
 ('1002', '李四', '女', '工程师', datetime.date(1980, 11, 1), '1111'),
 ('1003', '王五', '男', '工程师', datetime.date(1980, 1, 21), '2222'),
 ('1004', '赵六', '男', '工程师', datetime.date(1980, 1, 11), '2222'))
In [120]:

def get_df_from_db(sql):
 cursor = connection.cursor()
 cursor.execute(sql)
 data = cursor.fetchall()
 columnDes = cursor.description #获取连接对象的描述信息
 columnNames = [columnDes[i][0] for i in range(len(columnDes))]
 df = pd.DataFrame([list(i) for i in data],columns=columnNames)
 return df
In [113]:
import pandas as pd
In [ ]:
description()
In [16]:
len(columnDes)
Out[16]:
6
In [17]:
columnDes
Out[17]:
(('empid', 253, None, 20, 20, 0, False),
 ('name1', 253, None, 20, 20, 0, True),
 ('gender', 253, None, 20, 20, 0, True),
 ('title', 253, None, 20, 20, 0, True),
 ('birthday', 10, None, 10, 10, 0, True),
 ('depid', 253, None, 20, 20, 0, True))
 

posted on 2019-11-21 22:18  11-21  阅读(250)  评论(0编辑  收藏  举报

导航