zoukankan      html  css  js  c++  java
  • 利用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))
     
  • 相关阅读:
    相对路径与绝对路径问题
    javaee自定义servlet的步骤
    Struts1.X与Spring集成——另外一种方案
    菜鸟也能学cocos2dx3.0 浅析刀塔传奇(下)
    JAVA之了解类载入器Classloader
    IOS 编程中引用第三方的方类库的方法及常见问题
    通过eclipse的egit插件提交提示Auth fail
    定时器0的方式1 定时器1的方式1 数码管和led
    MongoDB入门学习(四):MongoDB的索引
    J2EE--JDBC
  • 原文地址:https://www.cnblogs.com/Koi504330/p/11908801.html
Copyright © 2011-2022 走看看