如何使用 Python 将访问权限 table 导入另一个访问权限 table

How to import access table to another access table using Python

早上好。

我是 Python 的新手,目前正在实习。他们要我制作的脚本的一部分是将 table 从 Access 数据库 1 导入到 Access 数据库 2。

我试图用以下两个库做一些事情:pyodbc 和 prettytable。我想用数据库 1 中的 prettytable 创建一个临时 table 并从中获取值并将其放入数据库 2。我希望我可以在 [=27 中放置一个变量=].但很明显,那永远行不通。所以我现在被困住了。

有人有想法吗?

您可以在下面阅读我使用的漂亮代码:

import pyodbc

DBfile = 'C:/Users/stage1/Documents/test.accdb'
conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/Users/stage1/Documents/test.accdb;")
cursor = conn.cursor()

DBfile = 'C:/Users/stage1/Documents/test.accdb'
conn2 = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/Users/stage1/Documents/test.accdb;")
cursor2 = conn2.cursor()

SQL = """select naam
FROM naam;"""
for row in cursor.execute(SQL):
    k = row.naam
    print k
    cursor2.execute("""insert into testtable(naam) values (?)""", (k))
    conn2.commit()

cursor.close()
conn.close()
cursor2.close()
conn2.close()   

问题已解决。感谢 mhawke

不评论你在做什么和为什么。我不理解漂亮的 table 东西,但你需要将 k 的值传递给执行语句。变化:

cursor.execute("""insert into Tableimport(name) values (k)""")

cursor.execute("""insert into Tableimport(name) values (?)""", (k,))

后者是参数化查询,其中 ? 占位符将替换为 k


评论来回太多,问题提供的信息不够清楚。因此,您可以尝试使用以下代码,在尝试任何查询之前检查所需的 table 和列是否存在。如果有任何不符合预期的情况,它将显示 tables and/or 列的列表。这旨在帮助诊断问题,它不是生产代码。\

import pyodbc

DBfile = 'C:/Users/stage1/Documents/test.accdb'
conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb,    *.accdb)};DBQ=C:/Users/stage1/Documents/test.accdb;")
cursor = conn.cursor()

source_table = 'naam'
dest_table = 'testtable'
column_name = 'naam'

if (cursor.columns(table=source_table, column=column_name).fetchone() and
    cursor.columns(table=dest_table, column=column_name).fetchone()):
    result = cursor.execute("SELECT naam FROM naam")
    for row in result:
        k = row.naam
        print 'Got k: {!r}'.format(k)
        cursor.execute("insert into testtable (naam) values (?)", (k,))
    conn.commit()
else:
    # tables and/or columns missing
    show_tables = show_source_columns = show_dest_columns = False

    if not cursor.tables(table=source_table).fetchone():
        print 'No source table named "{}"'.format(source_table)
        show_tables = True
    elif not cursor.columns(table=source_table, column=column_name).fetchone():
        show_source_columns = True

    if not cursor.tables(table=dest_table).fetchone():
        print 'No destination table named "{}"'.format(source_table)
        show_tables = True
    elif not cursor.columns(table=dest_table, column=column_name).fetchone():
        show_dest_columns = True

    if show_tables:
        print '\n\nAvailable tables are:'
        for row in cursor.tables():
            print row

    if show_source_columns:
        print '\n\nSource table "{}" missing column "{}". Available columns:'.format(source_table, column_name)
        for row in cursor.columns(table=source_table):
            print '{} : {}'.format(row.column_name, row.data_type)

    if show_dest_columns:
        print '\n\nDestination "{}" table missing column "{}". Available columns:'.format(dest_table, column_name)
        for row in cursor.columns(table=dest_table):
            print '{} : {}'.format(row.column_name, row.data_type)

cursor.close()
conn.close()