使用SQLAlchemy Core(而不是ORM),我试图使用值中的子查询来插入多行.对于MySQL,实际的SQL看起来像这样:
INSERT INTO widgets (name, type) VALUES
('Melon', (SELECT type FROM widgetTypes WHERE type='Squidgy')),
('Durian', (SELECT type FROM widgetTypes WHERE type='Spiky'))
Run Code Online (Sandbox Code Playgroud)
但是我values()在一个insert()只允许我一次插入一个子句的子句上使用该方法时似乎只能使用子查询.我想用他们全部传递给在一次插入多个值Connection的execute()方法的绑定参数列表,但是这似乎并没有得到支持.
有可能在一次通话中做我想做的事execute()吗?
这是一个独立的演示.请注意,这使用sqlite引擎,它不像MySQL那样支持多次插入,但SQLAlchemy代码仍然以与真实MySQL应用程序相同的方式失败.
from sqlalchemy import *
if __name__ == "__main__":
# Construct database
metadata = MetaData()
widgetTypes = Table('widgetTypes', metadata,
Column('id', INTEGER(), primary_key=True),
Column('type', VARCHAR(), nullable=False),
)
widgets = Table('widgets', metadata,
Column('id', INTEGER(), primary_key=True),
Column('name', VARCHAR(), nullable=False),
Column('type', INTEGER(), nullable=False),
ForeignKeyConstraint(['type'], ['widgetTypes.id']),
)
engine = …Run Code Online (Sandbox Code Playgroud) 使用 python 3,我想下载 API 数据,该数据以 JSON 形式返回,然后我想仅将特定的(列或字段或其他?)插入到 sqlite 数据库中。所以,这就是我所得到的和我遇到的问题:
使用python的请求模块:
##### import modules
import sqlite3
import requests
import json
headers = {
'Authorization' : 'ujbOsdlknfsodiflksdonosB4aA=',
'Accept' : 'application/json'
}
r = requests.get(
'https://api.lendingclub.com/api/investor/v1/accounts/94837758/detailednotes',
headers=headers
)
Run Code Online (Sandbox Code Playgroud)
好的,第一个问题是如何将请求的 JSON 数据放入 python 可以使用的东西(字典?)中。就是它...
jason.loads(r.text)
Run Code Online (Sandbox Code Playgroud)
然后我创建要插入特定数据的表:
curs.execute('''CREATE TABLE data(
loanId INTEGER NOT NULL,
noteAmount REAL NOT NULL,
)''')
Run Code Online (Sandbox Code Playgroud)
没问题...但是现在,即使 JSON 数据看起来像这样(尽管有数百条记录)...
{
"myNotes": [
{
"loanId":11111,
"noteId":22222,
"orderId":33333,
"purpose":"Debt consolidation",
"canBeTraded":true,
"creditTrend":"DOWN",
"loanAmount":10800,
"noteAmount":25,
"paymentsReceived":5.88,
"accruedInterest":12.1,
"principalPending":20.94,
},
{
"loanId":11111,
"noteId":22222,
"orderId":33333,
"purpose":"Credit card …Run Code Online (Sandbox Code Playgroud) 我有一个大约17 MB的txt文件,我必须解析,逐行拆分,然后使用事务将其添加到数据库中.如果文件太大而我尝试打开它,应用程序将耗尽内存,所以我尝试将其分片读取然后将每个片段导入数据库.由于交易,在DB中输入的数据不正确.使用的代码有一部分:
await file_reader.resolveLocalFilesystemUrl(path + file).then(async (file_entry: any) => {
await file_entry.file(async (file) => {
let reader = new FileReader();
reader.onprogress = async (reader_result: any) => {
let loaded = _.cloneDeep(reader_result.loaded);
let total = _.cloneDeep(reader_result.total);
let is_last_element: boolean = _.cloneDeep(loaded == total);
let i: number = 0;
let document_length = this.sync_parser.getReaderLength();
let event_type: number = this.sync_parser.getEventType();
content = iconv.encode(reader.result, encoding).toString();
await this.db.db.transaction(async (database: any) => {
while (document_length >= i) {
if (event_type == SyncParserIo.START_TAG) {
this.table = await this.newHeader(this.sync_parser.getName()); …Run Code Online (Sandbox Code Playgroud) 我是iphone开发的新手.我想在我的sqlite3数据库中插入多个值并在tableview中显示内容.我能够将单行数据插入到我的数据库中并检索它并显示数据但我不能插入多行数据.这是我的代码......
-(void)initializeTableData
{
sqlite3 *db=[DatabaseTestAppDelegate getNewDBConnection];
sqlite3_stmt *statement=nil;
sqlite3_stmt *statement1=nil;
if (insert_MyObj_statement == nil)
{
const char sql2[] = "DELETE FROM user";
sqlite3_prepare_v2(db, sql2, -1, &statement1, NULL);
sqlite3_step(statement1);
const char sql1[] = "INSERT INTO user (id,name) VALUES ('0','xxx')";
int result=sqlite3_prepare_v2(db, sql1, -1, &insert_MyObj_statement, NULL);
}
sqlite3_step(insert_MyObj_statement);
const char sql[] = "select * from user";
if(sqlite3_prepare_v2(db, sql, -1, &statement, NULL)!=SQLITE_OK)
{
NSAssert1(0,@"error in preparing staement",sqlite3_errmsg(db));
}
else
{
while(sqlite3_step(statement)==SQLITE_ROW)
[tableData addObject:[NSString stringWithFormat:@"%s",(char*)sqlite3_column_text(statement,1)]];
}
sqlite3_finalize(statement);
}
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以在我的表中插入多行数据.请帮帮我.谢谢.
我必须在数据库中插入50到500个联系人信息.我有4个arraylists分别包含图像,名称,数字,bool变量.
数据中的每一行都由所有4个arraylists和SNO组合而成.请参考下图.

我的问题是,假设我有500个联系人,我从用户的联系人列表中检索.这是一件好事,我有一个函数,每次将每行插入表中并调用500次?或者还有其他方法吗?一个意思是将所有的arraylists组合在一起,将它传递给函数并在那里检索数据并重复插入语句500次.
在性能方面有什么好处?
for(int i =0; i < 500; i++)
{
dbObj.insert_row(par1, par2, par3, par4, ...);
}
Run Code Online (Sandbox Code Playgroud)
要么
function insert_row(Combined ArrayLists)
{
for(int i=0; i<500; i++)
{
db.execSql(//Insert Statement);
}
}
Run Code Online (Sandbox Code Playgroud) 我有一种将值插入sqlite类的方法。在主要活动中,我正在解析json值,并尝试将值插入到sqlite循环中,因为我必须插入多个行。但是只有一行被添加到数据库中。
添加多行的方法如下:
public void addSession(String sessionname,String start_time,String end_time,String id) {
SQLiteDatabase db = this.getWritableDatabase();
try {
db.beginTransaction();
String sql = "Insert into session (id, sessionname,start_time, end_time) values(?,?,?,?)";
SQLiteStatement insert = db.compileStatement(sql);
insert.bindString(1, id);
insert.bindString(2, sessionname);
insert.bindString(3, start_time);
insert.bindString(4, end_time);
insert.execute();
db.setTransactionSuccessful();
} catch (Exception e) {
Log.w("Appet8:",e );
} finally {
db.endTransaction();
}
}
Run Code Online (Sandbox Code Playgroud)
在下面的for循环中,我尝试将值添加到sqlite表中:
JSONObject jsonObject = new JSONObject(response);
JSONArray foodsessions = jsonObject.getJSONArray("foodsessions");
for(int i=0;i<foodsessions.length();i++) {
JSONObject session_object = foodsessions.getJSONObject(i);
String session = session_object.getString("sessionname");
String …Run Code Online (Sandbox Code Playgroud) 我有一个奇怪的问题,似乎是特定于设备的:我的Android播客播放器应用程序从服务器获取数据并将其插入数据库.对于超过100个用户,一切正常.但是对于一个用户而言,数据插入失败并出现SQLite语法错误,但仅在他的Galaxy Tab(GT-P7310)上安装了Android 4.0.4.同一个用户还有两部手机(Galaxy Nexus和Nexus 5),其中相同的数据可以正常工作.
我可以在本地SQLite安装中执行该语句而不会出现问题.
这是导致问题的声明,添加了几个换行符以使其更具可读性:
INSERT OR REPLACE INTO podcast
(uid, uri, url, title, subTitle, link, authorName, authorEmail, categories, keywords, description, imageUrl, modified, subscribed, settings_autoAddEpisodes, settings_autoDownload, settings_maxKeptEpisodes, settings_playbackSpeed, id)
VALUES
(19, 'http://api.sr.se/api/rss/pod/17155', 'http://api.sr.se/api/rss/pod/17155', 'Luuk & Lokko', NULL, 'http://sverigesradio.se/sida/default.aspx?programid=4296', 'Luuk & Lokko', 'podd@sverigesradio.se', '[{"name":"Society \u0026 Culture"}]', '[]', 'Luuk & Lokko är ett schemalagt veckosamtal där Kristian Luuk och Andres Lokko pratar med varandra om ämnen som de har bestämt pÃ¥ förhand. Vissa infall kan förekomma men de kommer att …Run Code Online (Sandbox Code Playgroud) 我正在尝试将值插入表中
public class DatabaseHandler extends SQLiteOpenHelper {
private final static String INSERT_INTO_COUNTRIES = "INSERT INTO " + TABLE_COUNTRIES
+ " VALUES";
@Override
public void onCreate(SQLiteDatabase db) {
final String countries = "('1','Andorra','93','flag_andorra','AND'),
('2','Austria','43','flag_flag_austria','AUT')";
String query = INSERT_INTO_COUNTRIES + countries + ";";
db.execSQL(query);
}
}
Run Code Online (Sandbox Code Playgroud)
并得到以下错误:
android.database.sqlite.SQLiteException: near ",": syntax error: , while compiling: INSERT INTO cardberry_countries VALUES('1','Andorra','93','flag_andorra','AND'),('2','Austria','43','flag_flag_austria','AUT');
Run Code Online (Sandbox Code Playgroud)
Android 4.0.4 HTC Sense 3.6出错.我在Android 4.2及更高版本上运行的多个设备上进行了测试,它运行正常.
有人知道这是什么问题吗?
我试图将Android设备上的值插入到sqlite数据库中.
但是,有时会抛出以下错误:
android.database.sqlite.SQLiteException: near ",": syntax error: , while compiling: INSERT INTO sensor_event (created_at, updated_at, type, x, y, z, time) VALUES (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?)
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不知道为什么查询没有通过.还有谁?
干杯,
戈登
所以我能够在我的数据库中创建一个新表并从文件中获取所有信息,以使用游标填充除表中最后一列之外的所有信息,并按照通常的方式执行.
最后一列信息来自不同的来源,并在我的代码中作为整数列表.我将如何将这个整数列表添加到我的上一栏?
我已经尝试了各种循环和迭代,但我只是错过了一些东西(可能很明显),如何正确地表达它.
connection = sqlite3.connect('database.db')
cursor = connection.cursor()
for j in list:
cursor.execute('insert into Table (column) values (?)', j)
connection.commit()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Traceback (most recent call last):
File "Homework/Homework7/bam_counting.py", line 157, in <module>
cursor.execute('insert into Genes (counts) values (?)', j)
ValueError: parameters are of unsupported type
Run Code Online (Sandbox Code Playgroud) sqlite ×7
android ×5
python ×3
json ×2
cordova ×1
database ×1
insert ×1
iphone ×1
java ×1
list ×1
mysql ×1
objective-c ×1
python-3.x ×1
sql ×1
sqlalchemy ×1
transactions ×1
typescript ×1