Python 3.7 to \u sql DatabaseError:在sq上执行失败

2024-04-20 01:39:14 发布

您现在位置:Python中文网/ 问答频道 /正文

  • Python=Python 3.7.3
  • 熊猫='0.24.2'
  • OS=MacOS莫哈韦10.14

我想在mysql表中附加一个dataframe。下面的代码给出了一个错误:DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': not all arguments converted during string formatting

代码:

import pandas as pd
import pymysql
from datetime import date
from datetime import datetime
from dateutil.relativedelta import relativedelta
from time import sleep

now = str(datetime.now())[:19]

# APPEND TO DB TABLE

print('Started at {}'.format(now))

dates = pd.date_range(start='2018-01-02', end='2018-01-11')
for date in dates:
    print('Appending {} to {}...'.format(date, date+relativedelta(days=1)))
    conn = pymysql.connect('host','user', 'pass', 'db')
    query='''select ... '''.format(date, date+relativedelta(days=1))
    df = pd.read_sql(query, conn)
    df.index.name = 'id'
    df.to_sql('table_name', con=conn, if_exists='append')
    print('-> DONE')
    sleep(3)

print('Finished appending at {}'.format(now))

如何避免这个错误并使用pymysql追加数据帧。我尝试过sqlalchemy,但我得到了一些类似于ModuleError: MySQLdb module not found的东西。我还尝试了brew install MySQL,然后pip install mysqlclient失败了,然后$ sudo apt-get install python3.7-dev libmysqlclient-dev也失败了,因为apt-get不是bash终端中的命令。。。你知道吗

任何帮助都将不胜感激


Tags: installnamefromimportformatdfsqldatetime