我使用的是带有MySQLdb 32bit的Python 2.7,以及运行本地的MySQL 5.5.8.
我为此疯狂,我从来没有见过这样的东西.
基本上,我通过以下方式将记录插入MySQL:
db=MySQLdb.connect(host="localhost",user="root", passwd="mypassword",db="python",port=3307)
cur=db.cursor()
cur.execute("INSERT INTO mytable(myfield) VALUES(%s);","somedata")
Run Code Online (Sandbox Code Playgroud)
我已经验证它已正确连接,并且它可以成功地SELECT从数据库中获取数据.
这是奇怪的部分:从MySQL查询浏览器(GUI工具)和MySQL通过CMD,我无法看到插入的记录.
我可以从我的Python脚本插入和选择记录,但它们不会显示在我的数据库中,它只会返回 Empty Set (0.00 sec)
这里有一个非常奇怪的部分:我可以从GUI工具和控制台截断和删除数据.
总结一下:我可以从Python脚本中插入和选择数据.我无法在MySQL中看到这些数据.但是,我可以使用MySQL截断并删除该数据.
在这一点上我完全迷失了.
我有一块想要在屏幕上加载的图像.所有图像都是我下载并存储在SD-CARD上的文件.
到目前为止,我发现了两种方法,首先是在活动开始时将它们加载到主线程上(我得到了大约70个图像,所有加载它们需要大约2.1秒).
另一种方式是我现在正在测试的.将它们加载到分离的线程上,同时我可以为用户显示加载动画.现在我使用ThreadPoolExecutor实现了4.3秒.我在10个线程上做到了.
最后一种方法,(这是我唯一没有测试的方法)是使用精灵表.
我不能使用应用程序缓存,因为在我的应用程序中我有很多屏幕,每个屏幕都有自己的图像集.
您怎么看?加载大量图像的最快方法是什么?您知道哪些加速技术可以帮助我?
我目前正在开发一个允许自由绘图的应用程序.
我目前使用的方法如下:
currentLine是一个列表,用于保存ACTION_MOVE返回的所有点的历史记录.
public boolean onTouchEvent (MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
Point p = new Point(event.getX(),event.getY());
currentLine.addPoint(p);
invalidate();
break;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
然后我把这些观点onDraw用我班上的方法画出来.
@Override
protected void onDraw(Canvas c) {
super.onDraw(c);
//Draw Background Color
c.drawColor(Color.BLUE);
//Setup Paint
Paint p = new Paint();
p.setStyle(Style.FILL);
p.setColor(COLOR.WHITE);
//iterate through points
if(currentLine.size()>0){
for(int x = 0;x<currentLine.size();x++){
c.drawCircle(currentLine.get(x).getX(), currentLine.get(x).getY(), 3, p);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法效果很好,没有任何延迟或任何问题.
除此之外,它没有得到它需要的足够的分数.
例如,如果我要在整个屏幕上快速拖动我的手指,它可能只会绘制整个事件的15个点.
如何提高MotionEvent的性能/速度?我怎样才能获得更多积分?或者我还应该做些什么呢?
- - 编辑 - -
我自己设法解决了这个问题. …
我正在使用一个IDbCommandTreeInterceptor在我的模型上启用软删除.
System.Data.Entity.Infrastructure.Interception.DbInterception.Add(
new SoftDeleteInterception());
Run Code Online (Sandbox Code Playgroud)
我希望能够暂时禁用拦截器,以便我可以选择"已删除"的实体进行审计.
但是,看起来这个DbInterception集合是整个集合的.
有没有办法在DbContext 没有拦截的情况下创建一个新的?甚至是一种在DbContext每次创建拦截器时添加拦截器的方法?
我有一张记录表
ID
EntityID
Value
Status
Run Code Online (Sandbox Code Playgroud)
和实体表
ID
Col1
Col2
CurrentRecordID
Run Code Online (Sandbox Code Playgroud)
CurrentRecordID应的Record绑在Entity与Status0
我有表两个检查约束之一Entity是检查,以确保CurrentRecordID实际上是对当前记录,一个Record是检查,以确保,如果它具有为0的状态,它EntityID有CurrentRecordID它的ID相符。
所以本质上,这两个检查约束做同样的事情,但分别在每个表上
检查约束是在事务的最后运行还是在表上每次插入/更新后像触发器一样运行?
如果它们在每次修改后运行,这两个约束是否会相互冲突(意味着,约束将在下一个表有机会更新其值之前抛出错误)。
这是运行以插入新记录并将其设置为给定实体的当前查询的示例
UPDATE Record SET Status = 1 WHERE Status = 0 AND EntityID = @EntityID
INSERT INTO Record(EntityID, Value, Status) VALUES(@EntityID, 100, 0)
DECLARE @RecordID INT = @@IDENTITY
UPDATE Entity SET CurrentRecordID = RecordID WHERE ID = @EntityID
Run Code Online (Sandbox Code Playgroud) 我对PHP和MySQL有一个奇怪的问题.为了尝试从PHP创建表,我已经将我需要的查询粘贴到PHP中,该查询在PHP环境之外成功执行.
$CREATE_PAGES = "DROP TABLE IF EXISTS `MyDatabase`.`pages`;
CREATE TABLE `MyDatabase`.`pages` (
`Page_ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Page_File` varchar(1000) NOT NULL,
`Page_Description` varchar(1000) NOT NULL,
`Page_Message` longtext NOT NULL,
PRIMARY KEY (`Page_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;";
$result= mysql_query($CREATE_PAGES,$link);
if(!($result)){
echo mysql_error();
echo $CREATE_PAGES;
}
Run Code Online (Sandbox Code Playgroud)
然后我收到标准错误消息
. . . for the right syntax to use near 'CREATE TABLE `MyDatabase`.`pages` ( `Page_ID` int(10) unsigned NOT NULL' at line 2
Run Code Online (Sandbox Code Playgroud)
然而,奇怪的是,当我回显查询时,$CREATE_PAGES我可以复制和粘贴,它将执行得很好.怎么会出现语法错误?
我知道这不是连接错误,我可以从该数据库中的另一个表中提取数据.有什么我想念的吗?
android ×2
mysql ×2
bitmap ×1
database ×1
insert ×1
load ×1
performance ×1
php ×1
python ×1
soft-delete ×1
sql-server ×1
touch-event ×1