我尝试将API中的值插入mysql数据库,但在尝试插入值时遇到错误
SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,了解在第2行的'INSERT INTO DynamicBikeData(AvailableBike,Capacity,Status,Location)VALUES(31'附近使用的正确语法
我已经包含了下面的代码,我已经尝试了多种方式格式化sql语句,但错误没有改变
import mysql.connector
import requests
import json
#Connect to MySQLServer
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="*********"
)
#Create DB if not already exists
mycursor = mydb.cursor()
try:
mycursor.execute("CREATE DATABASE comp30830project")
mycursor.execute("use comp30830project; CREATE TABLE DynamicBikeData (AvailableBike INT, Capacity INT, Status VARCHAR(255),Location VARCHAR(255))")
except:
print("DataBase already exists")
#Dublin Bikes Data Pull
r = requests.get("https://api.jcdecaux.com/vls/v1/stations",
params={"apiKey":'**************',
"contract": "dublin"})
(json.loads(r.text))
response = requests.get("https://api.jcdecaux.com/vls/v1/stations/42?apiKey=***********")
data = response.text
BikeData = json.loads(data)
for i in range(1,43):
response = requests.get(f"https://api.jcdecaux.com/vls/v1/stations/{i}?apiKey=****************&contract=dublin")
data = response.text
data = json.loads(data)
availableBikes = data['available_bikes']
location = f"{data['position']['lat']}{data['position']['lng']}"
capacity = data['bike_stands']
status = data['status']
sql = f"""
USE comp30830project
INSERT INTO DynamicBikeData (AvailableBike, Capacity, Status, Location) VALUES ({availableBikes},{capacity},{status},{location});"""
mycursor.execute(sql)
mydb.commit()
编辑:我还尝试了第二种格式化sql的方法,仍然产生这个结果
数据库已存在Traceback(最近调用最后):文件“/库/框架/Python.framework/版本/3.10/库/Python 3.10/站点包/mysql/连接器/连接_cext.py”,第608行,在cmd_query self._cmysql.query(_mysql_connector. MySQL接口错误:SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,了解在第2行的'INSERT INTO DynamicBikeData(AvailableBike,Capacity,Status,Location)VALUES('附近使用的正确语法
上述异常是以下异常的直接原因:
追溯(最近调用最后调用):文件“/用户/eoin/桌面/COMP 30830项目/CreateDBandAddData.py“,第45行,在我的光标中。执行(sql,值)文件“/库/框架/Python.framework/版本/3.10/库/Python 3.10/站点包/mysql/连接器/游标_cext.py”,第330行,执行中结果= self._cnx.cmd_query(文件“/库/框架/Python.framework/版本/3.10/库/Python 3.10/站点包/mysql/连接器/连接_cext.py”,第616行,在cmd_query中引发get_mysql_exception(mysql.连接器.错误.编程错误:1064(42000):SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,了解在第2行的'INSERT INTO DynamicBikeData(AvailableBike,Capacity,Status,Location)VALUES('附近使用的正确语法
1条答案
按热度按时间yjghlzjz1#
不要使用f字符串,尝试像这样插入数据,
这应该有助于避免任何错误。如果你仍然面临同样的错误,请提供一个详细的日志,并检查是否所有的变量返回的API有它的值!