栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

python操作accesss数据库和Mysql数据库,使用pymysql,pyodbc库,将access里面的表在mysql里面创建

python操作accesss数据库和Mysql数据库,使用pymysql,pyodbc库,将access里面的表在mysql里面创建

本片文章分为两个部分,此部分为上半部分,这次主要是把access数据转到mysql数据库,接下来看代码。

import pyodbc
import pymysql

#写的一个类 password需要输入自己MySQL的密码
class mysql(object):
    def __init__(self, host='localhost', user='root', port=3306, charset='utf8', passwd='xxx'):
        self.host = host
        self.user = user
        self.port = port
        self.charset = charset
        self.passwd = passwd

    def create_database(self, dbname):  # 库的创建传入库名
        conn = pymysql.connect(
            host=self.host,
            user=self.user,
            passwd=self.passwd,
            port=self.port,
            charset=self.charset
        )
        # 获取游标
        cursor = conn.cursor()
        sql = f'create database if not exists {dbname} default character set utf8'
        cursor.execute(sql)  # 提及语句
        conn.commit()  # 提及更改
        # 关闭
        cursor.close()
        conn.close()

    def create_T(self, dbname, sql_table):  # 表的创建传入库名和,建表语句
        conn = pymysql.connect(
            host=self.host,
            user=self.user,
            passwd=self.passwd,
            port=self.port,
            charset=self.charset,
            db=dbname
        )
        # 获取游标
        cursor = conn.cursor()
        cursor.execute(sql_table)
        conn.commit()  # 提及更改
        # 关闭
        cursor.close()
        conn.close()


if __name__ == '__main__':
    base = mysql()#创建对象
    base.create_database('work2009')#建立一个叫work2009的数库
    #创建access数库连接
    DBfile = r"C:/Users/22248/Desktop/原始数据库/AdventureWorks2008.mdb"  # 数据库文件
    conn = pyodbc.connect(r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + DBfile + ";Uid=;Pwd=;")
    cursor = conn.cursor()
    #准备3个列表容器
    tables = [] #表名容器
    fields = [] #字段容器
    field_str = [] #字段封装成sql语句容器
    #获取所以表名
    for table_info in cursor.tables(tableType='TABLE'):
        tables.append(table_info.table_name)
    #遍历所有表
    for table in tables:
        for row in cursor.columns(table):
            fields.append(row.column_name)#row.column_name得到表的字段
        for field_r in fields:  # 将一个表的字段封装成字符串
            s = f'{field_r} char(120)'  #做成sql语句形式
            field_str.append(s)
        fields.clear()  #清理字段容器,准备装下一个表的字段
        m = ','.join(field_str)
        base.create_T('work2009', f'create table {table}({m})') #在work2009建立表,这是sql,语句f'create table {table}({m})'
        field_str.clear() #清理字段sql语句容器,准备装下一个表

连接access数据库出现如下错误

pyodbc.InterfaceError: (‘IM002’, ‘[IM002] [Microsoft][ODBC 驱动程序管理器] 未发
现数据源名称并且未指定默认驱动程序 (0) (SQLDriverConnect)’)

例如上面这样的提示就需要安装64位的ODBC 驱动器:
下载地址:https://www.jb51.net/softs/695978.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/307469.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号