python で Access のテーブルを操作したく、テストでテーブルの作成からレコードの追加を行っています。
テーブルの作成は行えましたが、レコードの追加は[パラメーターが少なすぎます。3 を指定してください]
と Error なります。
作成コード
import pyodbc
conn_str = (
r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=' + get_db_path() + ';'
)
cnxn = pyodbc.connect(conn_str)
crsr = cnxn.cursor()
flg = False
table_name = 'テスト1'
sql_create_table = (
'CREATE TABLE ' + table_name +
' (ID COUNTER PRIMARY KEY,' +
'名前 VARCHAR(20), ' +
'国籍 VARCHAR(20), ' +
'年齢 int, ' +
'生年月日 datetime);'
)
for table_info in crsr.tables(tableType='TABLE'):
if table_info.table_name == table_name:
flg = True
break
if flg == False:
crsr.execute(sql_create_table)
crsr.commit()
print('テーブル{}を作成しました。'.format(table_name))
else:
print( '既にテーブル名【{}】は存在しています。'.format(table_name))
try:
crsr.close()
cnxn.close()
except:
pass
レコード追加コード
import pyodbc
import os
conn_str = (
r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=' + get_db_path() + ';'
)
cnxn = pyodbc.connect(conn_str)
crsr = cnxn.cursor()
flg = False
table_name = 'テスト1'
for table_info in crsr.tables(tableType='TABLE'):
if table_info.table_name == table_name:
flg = True
break
sql_insert_user_taro = (
'INSERT INTO ' + table_name + '(名前, 国籍, 年齢, 生年月日)'
'VALUES ("Taro", "Japan", 20, "2000-1-1");'
)
if flg == True:
crsr.execute(sql_insert_user_taro)
crsr.commit()
print('新規データ書き込み完了')
else:
print('テーブルが存在しません。')
try:
crsr.close()
cnxn.close()
except:
pass
あなたの回答
tips
プレビュー